2017-06-08 1 views
0

私はテキスト文字列を持っています。私は2つの単語を1つの単語に置き換えたいと思います。例えば。単語がartificial intelligenceの場合は、artificial_intelligenceに置き換えます。これは200単語のリストと5メガバイトのサイズのテキストファイルに対して行う必要があります。 私はstring.replaceを試しましたが、リストのためではなく、1つの要素に対してのみ動作します。フレーズ置換のpython

テキスト=「人工知能が深い学習のあらゆる状況で私たちのために有用です。」

Text.replace('Artificial intelligence','Artificial_intelligence')が働いています。 しかし

For I in range(len(Lista)): 
Text=Text.replace(Lista[I],List b[I]) 

は機能しません。

+0

200単語はあまり見えません。崇高なテキストを使用して試してみましたか? –

+0

実際に私はこのようなファイルを98個持っています。それは長すぎて手動ですべてを更新することはできません:) –

+0

これはちょうど「一回」の置き換えですか?もしそうなら、私はまだ崇高なテキストを使用し、Ctrl + Shift + Fを実行し、すべての出現を置き換えることをお勧めします。 –

答えて

3

私はあなたの交換のためのdictを使用することをお勧めします:

text = "Artificial intelligence is useful for us in every situation of deep learning." 
replacements = {"Artificial intelligence" : "Artificial_intelligence", 
       "deep learning" : "deep_learning"} 

次に、あなたのアプローチは動作します(これは大文字と小文字が区別されますが):他のアプローチについては

>>> for rep in replacements: 
     text = text.replace(rep, replacements[rep]) 
>>> print(text) 
Artificial_intelligence is useful for us in every situation of deep_learning. 

を(提案regex-のようにアプローチ)、SO: Python replace multiple stringsをご覧ください。

import re 

list_a = ['Artificial intelligence', 'Deep learning'] 
list_b = ['artificial_intelligence', 'deep_learning'] 
text = 'Artificial intelligence is useful for us in every situation of deep learning.' 

for from_, to in zip(list_a, list_b): 
    text = re.sub(from_, to, text, flags=re.IGNORECASE) 

print(text) 
# artificial_intelligence is useful for us in every situation of deep_learning. 

zip()機能ウィッヒの使用ができますあなたはあなたのリストのエントリと、あなたの文字列の間のケースの問題を抱えているので

0

は、あなたが欲しいものを得ることがIGNORECASEフラグとre.sub()機能を使用することができます同じ時間に2つのリストを反復処理します。


はまた、dictのは、あなたの置換データのために、より適しているであろう、クリスチャンは右であることに注意してください。前のコードは、まったく同じ結果のために次のようになります。