2016-10-22 82 views
2

我有一個CSV文件,我想檢查第一行是否只有字符串(即標題)。我試圖避免使用像熊貓等任何額外的東西。我想我會使用if語句,如果行[0]是一個字符串打印這是一個CSV但我真的不知道該怎麼做: -S有什麼建議?如何使用Python檢查CSV是否有頭文件?

+0

這真的取決於你如何定義「頭」 – TurtleIzzy

+1

感謝您的建議大家,我想我已經找到了一種方法來做到這一點。 – plshelp

+0

@plshelp你能分享一下你是如何做到的嗎? –

回答

1

我會做這樣的事情:

is_header = not any(cell.isdigit() for cell in csv_table[0]) 

給定一個CSV表csv_table,搶頂(零)行。遍歷單元格並檢查它們是否包含任何純數字字符串。如果是這樣,它不是一個標題。在整個表達式前用not來抵消這一點。

結果:

In [1]: not any(cell.isdigit() for cell in ['2','1']) 
Out[1]: False 

In [2]: not any(cell.isdigit() for cell in ['2','gravy']) 
Out[2]: False 

In [3]: not any(cell.isdigit() for cell in ['gravy','gravy']) 
Out[3]: True 
5

Python有一個內置的CSV module可以幫助。例如。

import csv 
with open('example.csv', 'rb') as csvfile: 
    sniffer = csv.Sniffer() 
    has_header = sniffer.has_header(csvfile.read(2048)) 
    csvfile.seek(0) 
    # ... 
+0

謝謝。它對我很好。但是,你能解釋一下爲什麼你通過'2048'而不是其他號碼? –

+1

@AzharKhan'2048'完全是任意數字。它只需要足夠大以讀取至少兩到三個CSV行。你可以在幾行中讀入一個字符串並將其傳遞給'has_header'。 – ChrisD

+0

感謝您的解釋 –

相關問題