前言

很多数据都是字典类型,今天我们就来交大家怎么把字典写入csv文件,以及遇到一些错误应该怎么解决


一、将字典按列写入csv文件

1.将单个字典写入csv

代码如下(示例):

import csv
datas = []
dic = {'WWWW': 'FFFF', 'MSS': '2', 'TTL': '40', 'WS': '3', 'S': 1, 'N': 1, 'D': 0, 'T': 8, 'F': 'S', 'LEN': '3C'}
header = list(dic.keys())
datas.append(dic)
 
with open('test.csv', 'a', newline='',encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=header)  # 提前预览列名,当下面代码写入数据时,会将其一一对应。
    writer.writeheader()  # 写入列名
    writer.writerows(datas)  # 写入数据

2.将列表写入csv

代码如下(示例):

import pandas as pd

a = [1,2,3]
b= [3,4,4]
c =[5,5,5]
#字典中的key值即为csv中列名
dataframe = pd.DataFrame({'a_name':a,'b_name':b,'c_name':c})
dataframe.to_csv('test.csv',index=False,sep=',')

二、将字典按行写入csv文件

1.第一种方法

代码如下(示例):

import csv

dic = {'WWWW': 'FFFF', 'MSS': 2, 'TTL': 40, 'WS': 3, 'S': 1, 'N': 1, 'D': 0, 'T': 8, 'F': 'S', 'LEN': '3C'}
print(dic.items())
with open('test.csv','w',newline='') as f:
    writer = csv.writer(f)
    for row in dic.items():
        writer.writerow(row)

2.第二种方法

代码如下(示例):

import csv

myDict = {'WWWW': 'FFFF', 'MSS': 2, 'TTL': 40, 'WS': 3, 'S': 1, 'N': 1, 'D': 0, 'T': 8, 'F': 'S', 'LEN': '3C'}
keyList = myDict.keys()
valueList = myDict.values()
rows = zip(keyList, valueList)
#没有newline=''就会造成隔行写入
with open('test.csv', 'w',newline='') as f:
    writer = csv.writer(f)
    for row in rows:
        writer.writerow(row)

三、注意点

1、

with open('test.csv', 'wb') as f:

若是按照上复面的’wb‘形式写入到csv文件,就会出现错误(如下)。这是因为我们写入的数据就是bytes,csv编写器不再支持二进制模式。

TypeError: a bytes-like object is required, not ‘str’

2、csv文件用execl来打开,可能会出现乱码,原因如下

excel编码是gbk,pycharm和csv文件的编码是UTF-8

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐