如何从字符串中删除所有符号和空格?

2024-09-27 19:31:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在通过csv.reader()读取一个csv文件,我想读取没有任何符号或空格的值,小写如下:

a = " Kingston-(USB) = 1GB, 2GB, 32GB . . . "

像这样转换“a”:

^{pr2}$

我只想在数据中输入字母和数字。
应删除任何类型的符号。
我使用了.lower()函数和.strip()函数来完成此操作。但是strip函数只删除单词之间的空格,而我想删除所有类型的符号。
谢谢。在


Tags: 文件csv数据函数类型字母符号数字
3条回答

如果使用ascii,则可以使用str.翻译从小写字符串中删除无数字和字母的所有内容

>>> from string import ascii_letters, digits
>>> ascii = set(chr(e) for e in range(128))
>>> ascii_sans_alpha = ''.join(ascii.difference(ascii_letters + digits))
>>> a = " Kingston-(USB) = 1GB, 2GB, 32GB . . . "
>>> a.lower().translate(None,ascii_sans_alpha)
'kingstonusb1gb2gb32gb'

这有多快?使用timeit参考

^{pr2}$

我可能会做一些类似的事情:

import string
good = set(string.ascii_lowercase + string.digits)
a = ''.join(x for x in a.lower() if x in good)

它可能不是最有效的,但它应该是有效的,而且非常容易阅读/理解。在

您可以使用regex:

>>> import re
>>> a = " Kingston-(USB) = 1GB, 2GB, 32GB . . . "
>>> re.sub(r'[^a-z0-9]', '', a.lower())
'kingstonusb1gb2gb32gb'

或发电机:

^{pr2}$

或是一些快速的东西:

>>> import string
>>> allowed = set(string.lowercase + string.digits)
>>> ''.join(filter(allowed.__contains__, a.lower()))
'kingstonusb1gb2gb32gb'

相关问题 更多 >

    热门问题