python将字典按行或按列写入csv文件
python将字典按行或按列写入csv文件
·
前言
很多数据都是字典类型,今天我们就来交大家怎么把字典写入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
更多推荐
已为社区贡献2条内容
所有评论(0)