使用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')))
CSV是“Comma Separated Values(逗号分隔值)”的首字母缩略词。
CSV文件是用于表示和交换表格数据的简单文本文档。
CSV文件中的每一行表示“实体”,每个列表示它的属性。
日期:2020-07-07 20:54:28 来源:oir作者:oir