如何将Python Dict转换为带标题的CSV?

437 阅读2分钟

要将Python字典转换为带头文件的CSV文件,请调用csv.DictWriter(fileobject, fieldnames) 方法。使用产生的写作者对象的writer.writeheader() 方法,不带参数,来写标题。这将写入作为fieldnames 传递的列名列表,例如,通过以下方式获得的字典键 [dict.keys()](https://blog.finxter.com/python-dict-keys-method/).

写完页眉后,你可以调用DictWriter.writerow() 方法来写行。

安装CSV

在我们看一个例子之前,请确保安装csv libray(如果你还没有),在你的终端/shell/命令行中使用以下命令。

pip install csv

例子 - 简单的 Dict 转 CSV,Dict 键为标题

下面的例子将 dictionary 写到 CSV 中,用 dict 的键作为列名,值作为行值。

import csv

# Define the dictionary
data = {'A':'X1', 'B':'X2', 'C':'X3'}

# Open the file in writing mode
with open('my_file.csv', 'w', newline='') as f:

    # Create the writer with the dictionary keys as headers
    writer = csv.DictWriter(f, fieldnames=data.keys())

    # Write the header defined in the fieldnames argument
    writer.writeheader()

    # Write one or more rows
    writer.writerow(data)

ℹ 注意:我们使用 参数打开文件,以防止某些操作系统在 CSV 中插入空行。newline=''

结果文件'my_file.csv' ,看起来像这样。

例子 - 将Dict键作为标题的Dict列表转换为CSV

你可以在 Python 中轻松地将字典列表转换为 CSV 文件--通过使用 csv库。这是所有四种方法中最可定制的一种。

下面是将 Dict 列表转换为带标题行的 CSV 的六个简单步骤。

  1. 用import csv导入CSV库。
  2. 使用表达式open('my_file.csv', 'w', newline='') ,打开CSV文件。你需要换行参数,因为否则,你可能会在Windows中看到行之间的空行。
  3. 创建一个csv.DictWriter() 对象,传递文件和fieldnames 参数。
  4. 使用表达式salary[0].keys()fieldnames 参数设置为第一个 dictionary 的键。
  5. 用以下方法写头writer.writeheader()
  6. 写出字典的列表,使用writer.writerows()

下面是复制&粘贴的完整代码。

salary = [{'Name':'Alice', 'Job':'Data Scientist', 'Salary':122000},
          {'Name':'Bob', 'Job':'Engineer', 'Salary':77000},
          {'Name':'Carl', 'Job':'Manager', 'Salary':119000}]


# Method 2
import csv
with open('my_file.csv', 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=salary[0].keys())
    writer.writeheader()
    writer.writerows(salary)

输出文件命名为'my_file.csv' 并位于同一文件夹中。

Name,Job,Salary
Alice,Data Scientist,122000
Bob,Engineer,77000
Carl,Manager,119000

你可以在CSV写入器的构造函数中定制它(例如,将分隔符从逗号',' 修改为空白' ' 字符)。