2017-11-04 4 views
0

にカウンターからの情報を取って、私は文章の完全なファイルを持っていると私はそれでユニグラムやりたい:これは私のコードであり、唯一の1つの文字を取得しているPythonのファイル

をし、私はそれを取得したいです単語

old_lines = open("f.final",'r').readlines() 
new_lines = [] 

for line in old_lines: 
    words = line.split() 
    new_lines.append(words) 

print new_lines 

for lines in new_lines: 
    c = Counter(str(lines)) 


with open("final.final", 'w') as f: 
    for k,v in c.items(): 
     f.write("{} {}\n".format(k,v)) 
+0

:そして、これはすべての行だけでなく、最後の行のために行われるべきですラインのみ... – alfasin

答えて

1

あなたは文字列の各文字のカウントを取る文字列(すなわちstr(lines))、からカウンターを構築しています。リストから直接カウンターを作成する必要があります。 - 最後にあなたを残します `C =カウンター(文字列(行))`あなたがカウンターをオーバーライド保つ:この行で

with open("f.final") as f, open("final.final", 'w') as out_f: 
    # take count of all words from all lines 
    c = Counter(word for line in f for word in line.strip().split()) 

    # write to output file 
    for k, v in c.items(): 
     out_f.write("{} {}\n".format(k,v)) 
+0

もし私がbigram、trigramなどをしたいのですか? – user8865346

+0

@ user8865346次に、nltkを使用します。あなたが表示したコードはunigramを試みただけなので、私の答えはそれに対応しています。 –

+0

'code' old_lines =オープン( "f.final"、R '')readlines old_linesの行のための() new_lines = [] 線= ''」 : 線=ライン+ライン 印刷ライン トークン= nltk.word_tokenize(ライン) バイグラムの=のngrams(トークン、2) 印刷カウンタ(バイグラム) F =オープン( "f2.final" 'W') f.write( 'ここで何を? ') 'code' 私はこれを持っていましたが、私は同じ問題を抱えています。カウンターからファイルを取り出すことはできません。正しくバイグラムを印刷しますが、何をすべきか分かりません。 – user8865346