質問

テキストファイルに書き込むとき、file.writeインスタンスの一部には出力ファイルの改行が続き、その他のインスタンスには続きません。改行することをしない。コード:

    for doc,wc in wordcounts.items(): 
        out.write(doc)             #this works fine, no linebreak
        for word in wordlist: 
            if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
            else: out.write("\t0")                      #after each of these
        out.write("\n")        #this line had mixed spaces/tabs

不足しているものは何ですか?

更新

コードをSOに貼り付ける方法から手がかりを得る必要がありました。何らかの理由で、最終行にスペースとタブが混在していたため、TextMateでは、「for word ...」の外に視覚的に表示されました。ループ-しかし、インタープリターはそれをそのループの一部として扱っていました。スペースをタブに変換することで問題が解決しました。

ご入力いただきありがとうございます。

役に立ちましたか?

解決

書き込む文字列に \ n が含まれていない場合、

file.write()は改行を追加しません。

しかし、 out.write(" \ n")を使用して、単語リスト内の各単語に強制的に改行を挿入します。それはあなたが望むものですか?

    for doc,wc in wordcounts.items(): 
        out.write(doc)             #this works fine, no linebreak
        for word in wordlist: 
            if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
            else: out.write("\t0")                      #after each of these
            out.write("\n") #<--- NEWLINE ON EACH ITERATION!

おそらく out.write(&quot; \ n&quot;)のインデントが多すぎますか?

他のヒント

すべての単語の後に改行を書く:

for word in wordlist:
    ...
    out.write("\n")

これらはあなたが見ている改行ですか、それとも他に改行がありますか?

wc [word] strip()を実行する必要がある場合があります。 wc から単一のアイテムを印刷するだけで、この動作の原因となっているアイテムに既に改行があるかどうかを判断できます。

それまたは最後の out.write(&quot; \ n&quot;)のインデントが意図したとおりに動作していません。

インデントが間違っていると思います。

(また、if節を冗長にしてコードを読みやすくするために自由を取りました:)

for doc,wc in wordcounts.items()
   out.write(doc)
   for word in wordlist:
     out.write("\t%d" % wc.get(word,0))
   out.write("\n")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top