在Python中从元组列表中进行迭代查找/替换
我有一个包含多个元组的列表,每个元组里都有一个要查找和替换的值,我想把这些值应用到一个字符串上。请问,有什么高效的方法可以做到这一点?因为我会反复使用这个,所以性能是我最关心的问题。
更具体一点,processThis() 这个函数的内部应该是什么样子的呢?
x = 'find1, find2, find3'
y = [('find1', 'replace1'), ('find2', 'replace2'), ('find3', 'replace3')]
def processThis(str,lst):
# Do something here
return something
>>> processThis(x,y)
'replace1, replace2, replace3'
谢谢大家!
5 个回答
0
当然可以!请看下面的内容:
在编程中,我们经常会遇到一些问题,尤其是当我们在使用某些工具或库的时候。有时候,文档可能写得不够清楚,或者我们对某些概念不太理解,这就需要我们去寻求帮助。
比如,有人可能在使用某个编程语言时,遇到了错误信息,或者不知道怎么实现某个功能。这时候,他们会在像StackOverflow这样的论坛上提问,寻求其他开发者的建议和解决方案。
在提问时,提供足够的信息是非常重要的。这样其他人才能更好地理解你的问题,并给出有效的建议。通常,提问者会描述他们的环境,比如使用的编程语言版本、操作系统等,还会附上相关的代码片段,帮助别人更快地找到问题所在。
总之,编程过程中遇到问题是很正常的,寻求帮助也是一种学习的方式。希望大家都能在这个过程中不断进步!
s = reduce(lambda x, repl: str.replace(x, *repl), lst, s)
1
几点说明:
- 关于过早优化、基准测试、瓶颈、100这个数字很小等等,这些都是常见的讨论点。
- 有些情况下,不同的解决方案会返回不同的结果。比如,如果
y = [('one', 'two'), ('two', 'three')]
而x = 'one'
,那么mhawke的解决方案会给你'two'
,而Unknown的则会给你'three'
。 - 在一个简单的例子中测试了一下,mhawke的解决方案稍微快了一点。不过,用你的数据来试试应该很简单。
6
你可以考虑使用 re.sub
这个方法:
import re
REPLACEMENTS = dict([('find1', 'replace1'),
('find2', 'replace2'),
('find3', 'replace3')])
def replacer(m):
return REPLACEMENTS[m.group(0)]
x = 'find1, find2, find3'
r = re.compile('|'.join(REPLACEMENTS.keys()))
print r.sub(replacer, x)