从Python中的字符串中除去字母数字字符以外的所有内容

问题:

使用Python从字符串中删除所有非字母数字字符的最佳方式是什么?
PHP variant of this question中提出的解决方案可能会进行一些微小的调整,但对我来说似乎不是很“pythonic”。
为了纪录,我不只是要剥离句点和逗号(和其他标点符号),还可以引用括号等。

回答:

我只是为了好奇地计时了一些功能。在这些测试中,我从字符串string.printable(内置string模块的一部分)中删除非字母数字字符。

$ python -m timeit -s \
     "import string" \
     "''.join(ch for ch in string.printable if ch.isalnum())" 
10000 loops, best of 3: 57.6 usec per loop

$ python -m timeit -s \
    "import string" \
    "filter(str.isalnum, string.printable)"                 
10000 loops, best of 3: 37.9 usec per loop

$ python -m timeit -s \
    "import re, string" \
    "re.sub('[\W_]', '', string.printable)"
10000 loops, best of 3: 27.5 usec per loop

$ python -m timeit -s \
    "import re, string" \
    "re.sub('[\W_]+', '', string.printable)"                
100000 loops, best of 3: 15 usec per loop

$ python -m timeit -s \
    "import re, string; pattern = re.compile('[\W_]+')" \
    "pattern.sub('', string.printable)" 
100000 loops, best of 3: 11.2 usec per loop

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Stripping everything but alphanumeric chars from a string in Python

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 4 = 1