4

特定のより良い文字列に置き換えたい無効な文字列のセットがあります。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 内の各文字列、replacements 内の各置換、string.replace(replacement[0],replacement[1]) のような関数アルゴリズムが必要です。

頭に浮かんだのは、次のようなものでした...

map(lambda x,y: x.replace(y[0],y[1]),mylist,replacements)
map(partial(lambda x,y: x.replace(y[0],y[1]),mylist),replacements)

しかし、最初は追加の引数が必要で、2 番目のリスト オブジェクトには属性 replace がありません。これを解決するための洗練された機能的な方法はありますか?

4

2 に答える 2

-1

あなたは本当に速いものが欲しいようですね。その場合、ルックアップは非常に高速であるため、実際には辞書を使用する必要があります。

実際の例:

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', ''] 
于 2013-04-16T22:24:14.200 に答える