【发布时间】:2011-02-16 07:00:18
【问题描述】:
我有一个带有括号和逗号等的大字符串。我想去掉所有这些字符但保持间距。我怎样才能做到这一点。目前我正在使用
strippedList = re.sub(r'\W+', '', origList)
【问题讨论】:
-
为什么您对当前的解决方案不满意?
-
啊,我只需要将 '' 更改为 ' '。失败谢谢男人
标签: python
我有一个带有括号和逗号等的大字符串。我想去掉所有这些字符但保持间距。我怎样才能做到这一点。目前我正在使用
strippedList = re.sub(r'\W+', '', origList)
【问题讨论】:
标签: python
re.sub(r'([^\s\w]|_)+', '', origList)
【讨论】:
|_ 在这里做什么?
^\w 中的排除。
更快一点的实现:
import re
pattern = re.compile('([^\s\w]|_)+')
strippedList = pattern.sub('', value)
【讨论】:
基于正则表达式的版本可能更快(特别是如果您切换到使用编译表达式),但为了清楚起见,我喜欢这样:
"".join([c for c in origList if c in string.letters or c in string.whitespace])
join() 调用有点奇怪,但我认为这是非常惯用的 Python 将字符列表转换为字符串。
【讨论】:
演示您将在结果中得到哪些字符:
>>> 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
【讨论】: