我正在尝试写一个简单的python代码,用于接收csv文件,并使用tabulate模块在终端中打印出格式良好的内容。以下是我的代码片段:
table = []
try:
with open(filename) as csvfile:
reader = csv.DictReader(csvfile)
i = 0
for row in reader:
if (i == 0):
headers = row
i = 1
table.append(row)
except FileNotFoundError:
print("File not found.")
sys.exit()
#output
print(tabulate(table, headers, tablefmt='grid'))
当我运行代码时,它打印出表格,但是使用csv文件中的第二行而不是第一行作为标题,这使得输出的前两行重复。
基本上,如何将.csv文件的第一行存储为表头?
基于提供的帮助,我已经修改了我的代码,修改如下。现在,它可以工作了。谢谢。
table = []
try:
with open(filename, newline='') as csvfile:
reader = csv.DictReader(csvfile)
headers = reader.fieldnames
for row in reader:
table.append(list(row.values()))
except FileNotFoundError:
print("File not found.")
sys.exit()
#output
print(tabulate(table, headers, tablefmt='grid'))
2条答案
按热度按时间vi4fp9gy1#
请参阅
csv.DictReader
文档,特别是第二段。如果不使用fieldnames
参数(实际上没有),则生成的dict键(字段名)是CSV文件第一行的值。您可以使用reader.fieldnames
在代码中访问字段名。您的代码应类似于以下内容:
h4cxqtbf2#
我唯一能想到的是你的程序不知何故假设第一行是头,通常.csv文件的第一行是头,所以我可能会去掉if(i == 0)和它的内容,直接附加该行。