Python:剥离除空格和字母数字之外的所有内容

时间:2010-05-06 08:04:18

标签: python

我有一个带括号和逗号的大字符串等。我想剥离所有这些字符但保留间距。我怎样才能做到这一点。截至目前我正在使用

strippedList = re.sub(r'\W+', '', origList)

4 个答案:

答案 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.subRegex HOWTO: Matching CharactersRegex HOWTO: Repeating Things