首页 > 后端开发 > Python教程 > 如何高效替换字符串中的多个字符?

如何高效替换字符串中的多个字符?

DDD
发布: 2024-12-02 02:52:10
原创
981 人浏览过

How to Efficiently Replace Multiple Characters in a String?

替换字符串中多个字符的最佳方法

原始问题:
如何有效地替换字符串中的多个字符,比如&-> &,#-> # 等等?

第一种方法(顺序替换)

虽然提供的代码可以工作,但它涉及多个顺序替换,这可能效率低下。

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)
登录后复制

其他提示

优化速度(~2x改进)

不再检查输入字符串中每个字符是否存在,而是使用迭代器循环遍历要替换的字符。这可以显着提高性能。

使用 Python 3

由于其更快的字符串操作能力,Python 3 在字符替换任务中优于 Python 2。

以上是如何高效替换字符串中的多个字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板