2016-10-31 6 views
2

ここではさまざまな例を見てきましたが、何が起こっているのか分かりません。どんな助けもありがとうございます。正確な数字をDICT pythonの単語に置き換える

私は辞書を使って数字を単語に翻訳したいテキストファイルを持っています。

テキストファイルが長すぎるため、私は短いサンプルを提供します。 テキストファイル:

Movie: 12 15 11 13 
Director: 1 9 2 3 

私は私が辞書に作られたと思うのタブで区切られたファイルを持っています。 dictfile:私はこれまでのテキストファイルを介して実行し、それがに来るだけで最初の番号を変換しますしている

1 Adam 
2 Lee 
3 Tom 
9 Jones 
11 Hostel 
12 WoW 
13 Home 
15 Surf 

コード。

番号11の代わりに、それをHostelに置き換える代わりに、それをAdamAdamに置き換えます。単語に\ bを追加すると、何も置き換えられません。

コード:

f = [i.strip().split('\t') for i in open('dict')] 


with open('new.txt', 'w') as outfile, open('printnumbers') as infile: 
     for line in infile: 
      for oldword, newword in f: 
       line = line.replace(oldword, newword) 
    outfile.write(line) 

は最終的に私は1つのdictと相互に次の行を1行に置き換えることができるようにしたいです。私はもう少し研究をしようとします。

もう一度ありがとうございます。

+0

辞書には順序がありませんので、当然、「11」の前には「1」が表示される可能性が非常に高いです。 *あなたの変数を "単語"と呼んでも、それは自動的にはなりません。 – usr2564301

+0

hmm。私はあなたが言っていることを間違いなく理解しています。言葉の境界を置いて単語全体を検索しようとしましたが、代わりに何も置き換えていませんでした。それはファイルが根本的に間違っているからですか?または私は何かが欠けている。 –

答えて

2

まず、我々は、我々はあなたの大きな問題は、適切splitを使用していませんでした

with open('dict.txt') as f: 
    d = {a: b for line in f for a,b in line.split()} 

with open('outfile.txt') as out, open('infile.txt') as infile: 
    for line in infile: 
     line = line.split() 
     line = [d[word] if word in d else word for word in line] 
     out.write(' '.join(line)) 

txtfileすること辞書を適用します、dictfileから辞書を構築します。私はこのコードをテストしていないので、ファイルがどのようにフォーマットされているかによっていくつかの調整が必要な場合があります。

関連する問題