从Python的字符串中剥离除字母数字字符外的所有内容
使用Python从字符串中剥离所有非字母数字字符的最佳方法是什么?
这个问题的PHP变体中提供的解决方案可能会进行一些小的调整,但对我来说似乎并不是很“ pythonic”。
作为记录,我不仅要删除句点和逗号(以及其他标点符号),还希望删除引号,方括号等。
回答:
使用Python从字符串中剥离所有非字母数字字符的最佳方法是什么?
这个问题的PHP变体中提供的解决方案可能会进行一些小的调整,但对我来说似乎并不是很“ pythonic”。
作为记录,我不仅要删除句点和逗号(以及其他标点符号),还希望删除引号,方括号等。我只是出于好奇而对某些功能进行了计时。在这些测试中,我从字符串string.printable
(内置string模块的一部分)中删除了非字母数字字符。发现使用编译'[\W_]+'和pattern.sub('', str)
最快。
$ 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
以上是 从Python的字符串中剥离除字母数字字符外的所有内容 的全部内容, 来源链接: utcz.com/qa/429029.html