繁体   English   中英

使用Python的string.replace vs re.sub

[英]Use Python's string.replace vs re.sub

对于Python string.replace ,我应该使用string.replace还是re.sub进行基本的文本替换?

在PHP中,这是明确说明的,但我找不到类似的Python注释。

只要您可以使用str.replace() ,就应该使用它。 它避免了正则表达式的所有陷阱(如转义),并且通常更快。

只要有可能,就应该使用str.replace() 它更明确,更简单,更快捷。

In [1]: import re

In [2]: text = """For python 2.5, 2.6, should I be using string.replace or re.sub for basic text replacements.
In PHP, this was explicitly stated but I can't find a similar note for python.
"""

In [3]: timeit text.replace('e', 'X')
1000000 loops, best of 3: 735 ns per loop

In [4]: timeit re.sub('e', 'X', text)
100000 loops, best of 3: 5.52 us per loop

当你可以弄清楚如何调整它时,字符串操作通常比正则表达式更好。 正则表达式非常强大,但它通常较慢, 通常更难编写,调试和维护。

话虽如此,请注意上段中“通常”的数量! 有可能(而且我已经看到它已经完成)为一些20字符正则表达式完成的事情编写了数十亿行字符串操作。 使用“高效”字符串函数浪费宝贵的时间就可以完成一个好的正则表达式引擎几乎同样快的任务。 然后就是可维护性:正则表达式可能非常复杂,但有时候正则表达式会比一大块程序代码更简单,更容易阅读。

正则表达式的目的非常出色:在高度变化的草垛中寻找高度可变的针头。 可以把它想象成一个精确的扭矩扳手:它是完成一系列特定作业的完美工具,但它却是一个糟糕的锤子。

当您不确定要使用什么时,您应该遵循一些准则:

如果任何这些问题的答案都是“是”,那么您可能需要字符串操作。 否则,请考虑正则表达式。

另一件需要考虑的事情是,如果您正在进行相当复杂的替换, str.translate()可能就是您正在寻找的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM