使用dictwriter对象创建一个csv文件

“CSV”模块提供了一个“DictWriter类”,可以让我们将字典映射到CSV行。

#!/usr/bin/env python3
import csv
characters_data = [
  {
    'Name': 'Frodo',
    'Race': 'hobbit'
  },
  {
    'Name': 'Aragorn',
    'Race': 'man'
  },
  {
    'Name': 'Legolas',
    'Race': 'elf'
  },
  {
    'Name': 'Gimli',
    'Race': 'dwarf'
  }
]
if __name__ == '__main__':
    with open('lotr.csv', 'w') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=('Name', 'Race'))
        writer.writeheader()
        writer.writerows(characters_data)

读取CSV字段到字典中

“CSV”模块也定义了“DICTREADER”类,这让我们将CSV文件中的每一行映射到字典,其中键是字段名称,值是其实际内容。

#!/usr/bin/env python3
import csv
if __name__ == '__main__':
    with open('lotr.csv', newline='') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            print(row)

输出示例:

{'Name': 'Frodo', ' Race': ' hobbit'}
{'Name': 'Aragorn', ' Race': ' man'}
{'Name': 'Legolas', ' Race': ' elf'}
{'Name': 'Gimli', ' Race': ' dwarf'}

如上所述,第一行包含的字段,用作字典键;但如果文件的第一行不包含字段名称,该怎么办?
在这种情况下,我们可以使用“DiCtreader”类构造函数的“FieldNames”参数指定它们:

reader = csv.DictReader(csvfile, fieldnames=['Name', 'Race])

读取CSV文件

首先要导入“CSV”模块。

#!/usr/bin/env python3
import csv
if __name__ == '__main__':
    with open('lotr.csv', newline='') as csvfile:
        reader = csv.reader(csvfile)
        for row in reader:
            print(row)

执行脚本,结果如下:

$./script.py
['Name', 'Race']
['Frodo', 'hobbit']
['Aragorn', 'man']
['Legolas', 'elf']
['Gimli', 'dwarf']

如果分隔符不是逗号,那么使用delimiter进行指定:

csv_reader = csv.reader(csvfile, delimiter="|")

CSV示例文件

我们将使用下面的文件lotr.csv 作为示例

CSV文件内容:

Name,Race
Frodo,hobbit
Aragorn,man
Legolas,elf
Gimli,dwarf

创建CSV文件

如何使用python创建CSV文件

#!/usr/bin/env python3
import csv
if __name__ == '__main__':
    with open('lotr.csv', 'w', newline='') as csvfile:
        writer = csv.writer(csvfile)
        for row in (('Name', 'Race'), ('Frodo', 'hobbit'), ('Aragorn', 'man'), ('Legoals', 'elf'), ('Gimli', 'dwarf')):
            writer.writerow(row)

注意,我们使用写模式(w)中打开了lotr.csv文件。

由于在这种情况下,我们已经事先已经知道所有CSV行,我们可以避免使用循环,并使用Writer对象的“writerows”方法立即写入所有循环:

#!/usr/bin/env python3
import csv
if __name__ == '__main__':
    with open('lotr.csv', 'w', newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerows((('Name', 'Race'), ('Frodo', 'hobbit'), ('Aragorn', 'man'), ('Legolas', 'elf'), ('Gimli', 'dwarf')))
如何使用Python读取和创建CSV文件

CSV是“Comma Separated Values(逗号分隔值)”的首字母缩略词。
CSV文件是用于表示和交换表格数据的简单文本文档。
CSV文件中的每一行表示“实体”,每个列表示它的属性。

日期:2020-07-07 20:54:28 来源:oir作者:oir