如何检查CSV是否有使用Python的标头?

pls*_*elp 5 python csv python-2.7

我有一个CSV文件,我想检查第一行是否只有字符串(即标题).我试图避免使用像熊猫等任何额外的东西.我想我会使用if语句,如果row [0]是字符串打印这是一个CSV,但我真的不知道如何做到这一点: - 任何建议?

Chr*_*isD 8

Python有一个内置的CSV模块,可以提供帮助.例如

import csv
with open('example.csv', 'rb') as csvfile:
    sniffer = csv.Sniffer()
    has_header = sniffer.has_header(csvfile.read(2048))
    csvfile.seek(0)
    # ...
Run Code Online (Sandbox Code Playgroud)

  • sniffer.has_header总是返回True ...我测试了几个csv文件......:/ (3认同)
  • @AzharKhan`2048`是一个完全任意的数字。它只需要足够大就可以读取至少两到三个CSV行。相反,您可以在几行中读取一个字符串,然后将其传递给“ has_header”。 (2认同)

小智 3

我会做这样的事情:

is_header = not any(cell.isdigit() for cell in csv_table[0])
Run Code Online (Sandbox Code Playgroud)

给定一个 CSV 表csv_table,抓取顶部(第零行)。迭代单元格并检查它们是否包含任何纯数字字符串。如果是这样,则它不是标题。not在整个表达式前面用 a 来否定它。

结果:

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
Run Code Online (Sandbox Code Playgroud)