Python的csv.writerow()表现得有点时髦

Cis*_*tin 8 python csv

根据我的研究,csv.writeRow应该列入一个列表,然后将其写入给定的csv文件.这是我试过的:

from csv import writer
with open('Test.csv', 'wb') as file:
        csvFile, count = writer(file), 0
        titles = ["Hello", "World", "My", "Name", "Is", "Simon"]
        csvFile.writerow(titles)
Run Code Online (Sandbox Code Playgroud)

我只是想写它,以便每个单词都在不同的列中.

但是,当我打开它创建的文件时,我收到以下消息:

在此输入图像描述

在按下继续之后,我收到一条消息,说该文件已损坏,或者是一个SYLK文件.然后我可以打开文件,但只有在每次打开文件时都经过两个错误消息之后.

为什么是这样?

谢谢!

Pet*_*per 15

这是一个文档化的问题,如果前两个字符是"ID",Excel将假定csv文件是SYLK.

冒险进入意见领域 - 它不应该,但Excel认为它比扩展知道更好.公平地说,人们希望它能够找出扩展确实错误的情况,但是在这样的情况下,假设扩展是错误的,然后进一步假设文件损坏,如果它没有出现腐败,如果解释根据扩展只是令人难以置信.

@John Y指出:

需要注意的一件事是:由@PeterDeGlopper链接的Microsoft问题给出的"解决方法"是(手动)将撇号添加到文件中.(这也是Web上常见的建议,包括StackOverflow,试图强制将CSV数字视为字符串而不是数字.)这不是我称之为好的建议,因为它会为您的数据注入一个文字撇号.

@DSM建议quoting=csv.QUOTE_NONNUMERIC在作者身上使用.Excel不会被一个以"ID"而不是开头的文件混淆ID,所以如果其他可以使用CSV的工具接受这个引用级别,这可能是最好的解决方案,而不仅仅是忽略Excel的混乱.