首页 > 解决方案 > 尝试在 csv 文件中实现 Header 时出错

问题描述

我已经成功地将我从读取的行中收到的数据导出到 csv 文件中,但是我需要为每一行设置一个 Header 以便我可以识别它们。我试过这个:

file = open("llistaClients.csv", "w")
file.write("ID;NAME;PHONE;EMAIL;STREET;CITY")
for row in rows:        
    print(row['id'], row['name'], row['phone'], row['email'], row['street'], row['city'], sep="\t")
    dades = str(row['id']) + ";" + str(row['name']) + ";" + str(row['phone']) + ";" + str(row['email']) \
            + ";" + str(row['street']) + ";" + str(row['city']);
    file.write(dades + "\n")

没有这个file.write("ID;NAME;PHONE;EMAIL;STREET;CITY"),一切都完美无缺:

在此处输入图像描述

但是如果我尝试使用它,它就不会用 Excel 打开。但是,如果我用记事本打开同一个文件,它确实会应用这个标题。

我有一个潜在的修复方法,可以让我毫无问题地使用:(其他字段)

    import csv

    with open("llistaProductes.csv","w") as csvfile:

    fieldnames = ['id','name','list_price','create_date'];
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader();
    for row in rows:
        #print(dict(row))
        print(row['id'], row['name'], row['list_price'], row['create_date'], sep="\t")
        writer.writerow({'id': row['id'], 'name': row['name'],
                         'list_price': row['list_price'], 'create_date': row['create_date']})

但是使用这个我在excel中得到了这个:

在此处输入图像描述

它不会在列之间分开..这还不错,但不是应该怎么做..

那么这里的问题是,为什么我不能正确使用第一种方法呢?如果第二个是我应该使用的如何分隔列。谢谢你。

标签: python-3.xcsvexport-to-csv

解决方案


标题后必须有一个换行符:

file.write("ID;NAME;PHONE;EMAIL;STREET;CITY\n")

我看不出 Excel 不会打开此文件的原因。您收到错误消息吗?

至于第二个示例,您可以通过在文件开头添加以下内容来告诉 Excel 使用某个分隔符:

sep=,
id,name,email, ..

推荐阅读