2010-06-06 322 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並查看是否出現錯誤。