在运行Windows XP专业版的Python 2.7中:
import csv
outfile = file('test.csv', 'w')
writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writer.writerow(['hi','dude'])
writer.writerow(['hi2','dude2'])
outfile.close()
Run Code Online (Sandbox Code Playgroud)
它生成一个文件test.csv,每行有一个额外的\ r \n,如下所示:
hi,dude\r\r\nhi2,dude2\r\r\n
Run Code Online (Sandbox Code Playgroud)
而不是预期的:
hi,dude\r\nhi2,dude2\r\n
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,或者这实际上是期望的行为?
写入文本文件时,某些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
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
更新
我应该从代码粘贴到SO中获取线索.由于某种原因,最后一行中有空格和制表符的混合,因此在TextMate中,它在视觉上出现在"for word ..."循环之外 - 但是解释器将其视为该循环的一部分.将空格转换为制表符解决了这个问题.
感谢您的输入.