8

根据我的研究, 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)

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

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

在此处输入图像描述

无论如何按下继续后,我收到一条消息,指出该文件已损坏,或者是 SYLK 文件。然后我可以打开文件,但只有在每次打开文件时都会出现两条错误消息。

为什么是这样?

谢谢!

4

1 回答 1

15

如果前两个字符是“ID”,Excel 将假定 csv 文件是 SYLK,这是一个记录在案的问题。

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

@John Y 指出:

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

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

于 2013-08-07T22:50:37.837 回答