-1

各行に1つのリストが含まれ、各リストにはハイフネーションの後の文の1つの単語が含まれる出力があります。次のようになります。

['I']
['am']
['a']
['man.']
['I']
['would']
['like']
['to']
['find']
['a']
['so','lu','tion.'] 
(let's say it's hyphenated like this, I'm not a native English speaker)

etc.

さて、私がやりたいのは、この出力を新しい .txt ファイルに書き込むことですが、各文 (リスト内の項目にポイントが含まれているときに文が終了する) を改行に書き込む必要があります。この .txt ファイルに次の結果を書き込みたいと思います。

I am a man.
I would like to find a so,lu,tion.
etc.

このすべてに先行するコーディングは次のとおりです。

with open('file.txt','r') as f:
    for line in f:
        for word in line.split():
            if h_en.syllables(word)!=[]:
                h_en.syllables (word)
            else:
                print ([word])

私が望む結果は、各行に文を含むファイルです。文の各単語は、ハイフンでつながれたバージョンで表されます。

助言がありますか?

本当にありがとうございました。

4

3 に答える 3

2

このような基本的なものがあなたのニーズに答えているようです:

def write_sentences(filename, *word_lists):
  with open(filename, "w") as f:
    sentence = []
    for word_list in word_lists:
      word = ",".join(word_list) ##last edit
      sentence.append(word)
      if word.endswith("."):
        f.write(" ".join(sentence))
        f.write("\n")
        sentence = []

関数write_sentencesに出力ファイル名を入力してから、各単語リストを引数として入力します。単語リストのリストがある場合 (例: )、関数を呼び出してすべてを渡すときに [['I'], ['am'], ...]使用できます。*

EDIT:回答の最新の編集で機能するように変更されました(単語リストに複数の単語がある)

于 2013-10-26T15:54:26.343 に答える
0
words = [['I'],['am'],['a'],['man.'],['I'],['would'],['like'],['to'],['find'],['a'],['so','lu','tion.']]

text = "".join(
    "".join(item) + ("\n" if item[-1].endswith(".") else " ") 
        for item in words)

with open("out.txt", "wt") as f:
    f.write(text)
于 2013-10-26T16:23:02.053 に答える