我有一个带括号和逗号的大字符串等。我想剥离所有这些字符但保留间距。我怎样才能做到这一点。截至目前我正在使用
strippedList = re.sub(r'\W+', '', origList)
答案 0 :(得分:36)
re.sub(r'([^\s\w]|_)+', '', origList)
答案 1 :(得分:8)
实施速度提高一点:
import re
pattern = re.compile('([^\s\w]|_)+')
strippedList = pattern.sub('', value)
答案 2 :(得分:7)
基于正则表达式的版本可能更快(特别是如果你切换到使用编译的表达式),但为了清楚起见,我喜欢这个:
"".join([c for c in origList if c in string.letters or c in string.whitespace])
join()
调用有点奇怪,但我认为这是非常惯用的Python,用于将字符列表转换为字符串。
答案 3 :(得分:1)
演示您将在结果中获得的字符:
>>> s = ''.join(chr(i) for i in range(256)) # all possible bytes
>>> re.sub(r'[^\s\w_]+','',s) # What will remain
'\t\n\x0b\x0c\r 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'
文档:re.sub,Regex HOWTO: Matching Characters,Regex HOWTO: Repeating Things