python中findreplace列表的itertools或functtools

2024-03-29 06:10:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组有时无效的字符串,我想用更好的字符串替换它们。我一直在使用functools和itertools,我想尝试将它们应用于这个问题,但我有点卡住了。以下是我所拥有的:

s1 = 'how to sing songs'
s2 = 'This is junk'
s3 = "This is gold"
s4 = 'HTML'
s5 = 'html'
s6 = 'i'
mylist = [s1,s2,s3,s4,s5,s6]

replacements = [('html','HTML'),('how to sing songs','singing'),('This is junk', ''),('i','')]

我想要一个函数算法,对mylist中的每个字符串,对于替换中的每个替换,字符串。替换(替换[0],替换[1])。在

我脑海中浮现的是什么样的东西。。。在

^{pr2}$

但是第二个参数说第一个对象没有替换对象。有没有一种巧妙的功能性方法来解决这个问题?在


Tags: to字符串s3ishtmlthiss4how
2条回答

听起来你想要的东西真的很快。在这种情况下,您应该真正使用字典,因为查找速度非常快。在

一个有效的例子:

mylist = ['how to sing songs', 'This is junk', "This is gold", 'HTML', 'html', 'i']
replacements = {'html':'HTML', 'how to sing songs':'singing', 'This is junk':'', 'i':''}

print [replacements.get(word, word) for word in mylist]  
# ['singing', '', 'This is gold', 'HTML', 'HTML', ''] 
>>> [reduce(lambda x, y: x.replace(y[0], y[1]), replacements, s) for s in mylist]
['singing', '', 'This is gold', 'HTML', 'HTML']

map()代替列表理解的等效代码:

^{pr2}$

相关问题 更多 >