2017-01-24 2 views
-3

文に猫などとして1と2を参照してください必要がありますのみ

sentence = 'the cat sat on the cat mat' 

indivdual_words = ['the', 'cat', 'sat', 'on', 'mat'] 
positions = [1, 2, 3, 4, 1, 2, 5] 

f = open('word_file.txt', 'w+') 
f.write(str(words)) 
f.close() 

f = open('pos_file.txt', 'w+') 
f.write(str(positions)) 
f.close() 

プログラムを作成するためにファイルを使用位置と言葉を使用して文字列をコピーし直すために、ファイルを使用するにはどのようにしているので

+1

'利用者の文は='私は意味shash678 @無効なパラメータ名 – depperm

+0

で、彼がした.... –

+0

ああ、古き良きOCR GCSEコンピューティングが。あなたの評価された授業科目に最適です。一般的に、SOの人々は、問題を自分でまず解決するための何らかの試みを見たいと思っています。 Downvoted。 – MrB

答えて

1

すべてを文字列として格納すると、有効なPython式に一致するファイルの内容になります。 ast.literal_evalを使用すると、実際のP​​ythonオブジェクトを文字列表現から取得できます。

from ast import literal_eval 

with open('word_file.txt') as f: 
    data = f.read().strip() 
    words = ast.literal_eval(data) 

with open('pos_file.txt') as f: 
    data = f.read().strip() 
    pos = ast.literal_eval(data) 

次に、以前とは逆の作業を行います。

result = " ".join([words[i-1] for i in pos]) 
1

あなたがリストの表現をダンプしているので、最善の方法はast.literal_eval

import ast 

with open('word_file.txt') as f: 
    indivdual_words = ast.literal_eval(f.read()) 
with open('pos_file.txt') as f: 
    positions = ast.literal_eval(f.read()) 

を使用してそれらをリードバックすることで、その後の順序で単語を生成するために、リスト内包を使って文を再作成、

sentence = " ".join([indivdual_words[i-1] for i in positions]) 

結果:

スペースと結合
+0

off-by-oneインデックス作成エラーがうまくキャッチされます。 –

0

あなたが読書を作成し、対応ファイルオブジェクトを書き込んだ後(ワットワードファイルについて、n個のインデックスファイル用):

1)空のリスト

に各単語を追加、ワードファイルオブジェクトを反復処理2)索引ファイルオブジェクトを繰り返し、索引ファイルオブジェクトから索引を介して単語リストの各単語を一時変数ワードに割り当ててから、作成しようとしている最初の空の文にその単語を追加します。

word_list = [] 
for word in w: 
wordlist.append(word) 

sentence = '' 
for index in n: 
word = wordlist[index] 
sentence+= word 
sentence+= ' ' 
関連する問題