针对“python csv实时一条一条插入且表头不重复问题”,可以考虑以下步骤:
1.创建csv文件,并写入表头。
2.基于csv模块的DictWriter,打开csv文件,并指定写入字典对象。
3.在代码运行的过程中,逐行读取需要插入到csv中的数据,如字典对象、列表等格式。
4.编写插入数据的函数,通过DictWriter.writerow传入需要插入的数据。
5.在插入数据前,可以先判断表头的重复情况。判断方法可以是比对输入数据的keys()和表头的不同元素数目,或者比对输入数据中的key和表头的元素是否完全一致。
示例1:插入字典对象
# csv写入表头
import csv
def write_csv(file_path, data):
with open(file_path, 'a+', newline='', encoding='utf-8-sig') as f:
header = data.keys()
writer = csv.DictWriter(f, fieldnames=header)
# 首次写入表头
if f.tell() == 0:
writer.writeheader()
writer.writerow(data)
if __name__ == '__main__':
demo_data1 = {'id': 1, 'name': 'Alice', 'age': 20}
demo_data2 = {'id': 2, 'name': 'Bob', 'age': 30, 'address': 'China'}
demo_data3 = {'name': 'Charie', 'age': 25, 'id': 3, 'email': 'charie@example.com'}
write_csv('demo.csv', demo_data1)
write_csv('demo.csv', demo_data2)
write_csv('demo.csv', demo_data3)
运行以上代码,每插入一条数据,都会自动判断并插入表头。即便某条数据的key和表头不完全一致,也会自动添加新的表头元素。
示例2:插入列表对象
# csv写入表头
import csv
def write_csv(file_path, data):
with open(file_path, 'a+', newline='', encoding='utf-8-sig') as f:
header = data[0].keys()
writer = csv.DictWriter(f, fieldnames=header)
# 首次写入表头
if f.tell() == 0:
writer.writeheader()
for row in data:
writer.writerow(row)
if __name__ == '__main__':
demo_data = [{'id': 1, 'name': 'Alice', 'age': 20},
{'id': 2, 'name': 'Bob', 'age': 30, 'address': 'China'},
{'name': 'Charie', 'age': 25, 'id': 3, 'email': 'charie@example.com'}]
write_csv('demo.csv', demo_data)
以上示例展示了一次性插入多条数据到csv中的情况。同样可以筛选表头的插入情况,并保证不会重复出现表头。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python csv实时一条一条插入且表头不重复问题 - Python技术站