抑制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
我漏掉了什么呢?
更新
我应该从代码在StackOverflow上粘贴的方式中得到一些提示。最后一行中,出于某种原因,混合了空格和制表符,这样在TextMate中看起来视觉上似乎在“for word...”循环之外,但解释器却把它当作这个循环的一部分。把空格转换成制表符解决了这个问题。
谢谢你的建议。
4 个回答
1
你在每个单词后面都写了换行:
for word in wordlist:
...
out.write("\n")
你看到的这些换行是这样的吗,还是还有其他的换行呢?
1
你可能需要对每个 wc[word]
使用一下 strip()
方法。打印出 wc
中的一个项目,可能就能帮你判断这些项目中是否已经有换行符,这可能是导致这个问题的原因。
另外,可能是你最后的 out.write("\n")
的缩进没有达到你想要的效果。
14
file.write()
这个方法在你写入的字符串里没有包含任何 \n
的时候,是不会自动添加换行的。
但是如果你用 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")
的缩进写得太多了???