簡體   English   中英

在file.write上禁止換行

[英]Suppress linebreak on file.write

寫入文本文件時,某些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 s,則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("\\n")太遠???

你在每個單詞后寫一個換行符:

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

這些是你看到的換行符,還是還有更多的換行符?

您可能需要在每個wc[word]上執行strip() wc打印單個項目可能足以確定這些項目上是否已存在換行符導致此行為的區域。

你最后的out.write("\\n")上的縮進或縮進都沒有按照你的意圖去做。

我認為你的縮進是錯誤的。

(我也冒昧地讓你的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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM