2010-06-06 325 views
12

有人可以提供一种有效的方法来检查文件是否具有使用Python的CSV格式?检查文件是否具有Python格式的CSV格式

+1

欢迎来到stackoverflow。你的问题可以使用更多的细节。作为首发者,您能否定义“csv格式”的含义?您需要仔细定义此格式。在这种格式中是否存在转义字符,注释标记或引号字符? 如果这个问题是作业,请添加一个名为“家庭作业”的标签,以便回复可以给你正确的指导。 – 2010-06-06 16:20:24

+1

我的意思是在CSV文件中逗号分隔值文件请参阅http://en.wikipedia.org/wiki/Comma-separated_values以获取更多详细信息。 – Joe 2010-06-06 16:23:14

+1

如果用csv'逗号分隔值'表示,那么就没有这种格式的标准。 – Max 2010-06-06 16:26:19

回答

0

Python有一个csv module,所以你可以尝试解析它在各种不同的方言。

-3

您需要清楚地考虑您认为CSV文件是什么。

例如,逗号之间会出现什么样的字符。它是纯文本吗?它可以是Unicode字符吗?每行应该有相同数量的逗号?

我没有严格的CSV文件的定义,我知道。通常它是用逗号分隔的ASCII文本,每行都有相同数量的逗号,并由平台的行结束符终止。

无论如何,一旦你回答了上述问题,你就会知道如何检测一个文件是否为CSV文件。

22

您可以尝试类似以下内容,但仅仅因为您从csv.Sniffer得到方言真的不足以保证您拥有有效的CSV文档。

csv_fileh = open(somefile, 'rb') 
try: 
    dialect = csv.Sniffer().sniff(csv_fileh.read(1024)) 
    # Perform various checks on the dialect (e.g., lineseparator, 
    # delimiter) to make sure it's sane 

    # Don't forget to reset the read position back to the start of 
    # the file before reading any entries. 
    csv_fileh.seek(0) 
except csv.Error: 
    # File appears not to be in CSV format; move along 
+0

*“......不足以保证......”:是的。在没有提供方言的情况下,我发现.ZIP是一个有效的CSV,其中@为分隔符 – alanjds 2015-09-16 21:54:32

-3

尝试将其解析为CSV并查看是否出现错误。