当前位置: 首页 > 面试题库 >

在Python中从字符串中剥离字母数字字符以外的所有内容

农飞星
2023-03-14
问题内容

使用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从字符串中剥离所有非字母数字字符的最佳方法是什么? 这个问题的PHP变体中提供的解决方案可能会进行一些小的调整,但对我来说似乎并不是很“ pythonic”。 作为记录,我不仅要删除句点和逗号(以及其他标点符号),还希望删除引号,方括号等。 问题答案: 使用Python从字符串中剥离所有非字母数字字符的最佳方法是什么? 这个问题的PHP变体中提供的解决方案可能会进行一些

  • 问题内容: 我有一个不错的代码片段,但是我想知道是否有人对如何执行此操作有更好的建议: 你会怎么做? 问题答案: 您可以使用正则表达式(使用 模块)来完成同样的事情。下面的示例匹配(非十进制数字或句点的任何字符)的游程,并将其替换为空字符串。请注意,如果使用标志编译模式,则结果字符串仍可能包含非ASCII数字。同样,删除“非数字”字符后的结果不一定是有效数字。

  • 问题内容: 考虑一个非DOM场景,您想使用JavaScript / ECMAScript从字符串中删除所有非数字字符。范围内的任何字符都应保留。 您将如何用纯JavaScript实现此目标?请记住,这是一个非DOM方案,因此jQuery和其他涉及浏览器和按键事件的解决方案都不适合。 问题答案: 使用正则表达式为的字符串方法,这是与所有非数字匹配的速记字符类:

  • 问题内容: 当在HTML文件中打印一行时,我试图找到一种仅显示每个HTML元素的内容而不显示格式本身的方法。如果找到,它将仅打印“某些文本”,打印“ hello”,等等。如何去做呢? 问题答案: 我一直使用此函数来剥离HTML标记,因为它仅需要Python stdlib: 对于Python 3: 对于Python 2:

  • 问题内容: 我正在编写python MapReduce字数统计程序。问题是数据中散布着许多非字母字符,我发现这篇文章从Python的字符串中剥离了除了字母数字字符之外的所有内容,这显示了使用正则表达式的一个很好的解决方案,但是我不确定如何实现它 恐怕我不确定该如何使用该库甚至正则表达式。我不确定如何将正则表达式模式正确地应用于传入的字符串(书的一行)以检索没有任何非字母数字字符的新行。 有什么建议

  • 问题内容: 我过去跑步 在Perl上摆脱不可打印的字符。 在Python中,没有POSIX正则表达式类,因此我无法编写[:print:]来表示我想要的含义。我不知道在Python中无法检测字符是否可打印。 你会怎么做? 编辑:它也必须支持Unicode字符。string.printable方式会很乐意将它们从输出中剥离。curses.ascii.isprint将为任何unicode字符返回fals