2016-08-20 17 views
1

からキーに値を変換する:私は出力したい私は、次のテキストをtxtファイル持っている辞書

I want to eat watermelon 
it tastes sweet pineapple 

へ:

water=45 
melon=8 
apple=35 
pineapple=67 
I=43 
to=90 
eat=12 
tastes=100 
sweet=21 
it=80 
watermelon=98 
want=70 

を、私は次のテキストを持つ別のファイルを持っている

I want to eat watermelon = 43,70,90,12,98 
it tastes sweet pineapple = 80,100,21,67 

これは私がこれまで持っているものです。

import nltk 
f = open(r'C:\folder\dic\file.txt','r') 
answer = {} 
for line in f: 
    k, v = line.strip().split('=') 
    answer[k.strip()] = v.strip() 

f.close() 

print answer.values() 

h = open(r'C:\folder\dic\file2.txt','r') 
raw=h.read() 
tokens = nltk.sent_tokenize(raw) 
text = nltk.Text(tokens) 


for line in text: 
    word = line 
    for value in answer.values(): 
     if value == word: 
      word=answer[keys] 
     else: 
      word="not found" 

print word 

これをPythonで行うにはどうすればよいでしょうか?

+0

'' –

答えて

1

このコードを確認してください。

import re 
f = open(r'C:\Users\dinesh_pundkar\Desktop\val.txt','r') 
val_dict = {} 
for line in f: 
    k, v = line.strip().split('=') 
    val_dict[k.strip()] = v.strip() 
f.close() 

print val_dict 

h = open(r'C:\Users\dinesh_pundkar\Desktop\str_txt.txt','r') 
str_list = [] 
for line in h: 
    str_list.append(str(line).strip()) 

print str_list 

tmp_str = '' 
for val in str_list: 
    tmp_str = val 
    for k in val_dict.keys(): 
      if k in val: 
       replace_str = str(val_dict[k]).strip() + "," 
       tmp_str= re.sub(r'\b{0}\b'.format(k),replace_str,tmp_str,flags=re.IGNORECASE) 

    tmp_str = tmp_str.strip(",") 
    print val, " = ", tmp_str 
    tmp_str = '' 

出力:

C:\Users\dinesh_pundkar\Desktop>python demo.py 
{'apple': '35', 'I': '43', 'sweet': '21', 'it': '80', 'water': '45', 'to': '90', 
'taste': '100', 'watermelon': '98', 'want': '70', 'pineapple': '67', 'melon': ' 
8', 'eat': '12'} 
['I want to eat watermelon', 'it taste sweet pineapple'] 
I want to eat watermelon = 43, 70, 90, 12, 98 
it taste sweet pineapple = 80, 100, 21, 67 
+0

は、それが動作ディネッシュありがとうございますが、問題は、たとえば、A = 23の番号2桁があればそこにある[ 'adfac' にCのために[C]に答えます] b = 56 c = 21の場合、結果はカンマで区切られます。2,3,5,6,2,1。 –

+0

@RiskaNanda - 今すぐ編集したコードを確認してください。以前は、 'a'を1、 'z'を '26'などに置き換えて、コンマ '、'を使用して文字列を分割して結合しました。それはなぜ '26'が '2,6'に変換されているのですか?今度は、 'a'を '1'、 'z'を'26 'などに置き換えて、最後から「、」を削除します。 –

+0

私はval_dictため、別の場合のデータを試みた: '水= 45 メロン= 8 リンゴ= 35 パイナップル= I 67 = 43 が= 90 が食べる= 12 味=甘い100 = 21 それ= 80 スイカ= 98 がstr_listのために= 70' とデータをしたい: '私はスイカ を食べたい、それは甘いpineapple' 味、私は結果だ:'私はスイカを食べたい= 43、70、90、12、 45,8 それは甘いパイナップル= 43、t100、s21、p43、ne35' という言葉に従うことができるかどうかを味わう。 –

関連する問題