原始问题:
如何有效地替换字符串中的多个字符,比如&-> &,#-> # 等等?
虽然提供的代码可以工作,但它涉及多个顺序替换,这可能效率低下。
strs = strs.replace('&', '\&') strs = strs.replace('#', '\#') ...
更有效的方法是将
text.replace('&', '\&').replace('#', '\#')
测试:替换字符串abc&def#ghi中的字符&和#。
Method | Time (μs per loop) |
---|---|
Chaining replacements | 0.814 |
各种其他方法可用于替换字符string:
import re rx = re.compile('([&#])') text = rx.sub(r'\', text)
def mk_esc(esc_chars): return lambda s: ''.join(['\' + c if c in esc_chars else c for c in s]) esc = mk_esc('&#') text = esc(text)
chars = "&#" for c in chars: text = text.replace(c, "\" + c)
不再检查输入字符串中每个字符是否存在,而是使用迭代器循环遍历要替换的字符。这可以显着提高性能。
由于其更快的字符串操作能力,Python 3 在字符替换任务中优于 Python 2。
以上是如何高效替换字符串中的多个字符?的详细内容。更多信息请关注PHP中文网其他相关文章!