python将字典按行或按列写入csv文件

本文介绍了如何使用Python将字典数据写入CSV文件,包括按列和按行两种方式。对于按列写入,分别展示了单个字典和字典列表的写入方法;按行写入则提供了两种不同实现。同时,文章提到了在处理过程中可能遇到的错误,如二进制模式写入导致的TypeError和编码问题导致的乱码。
摘要由CSDN通过智能技术生成


前言

很多数据都是字典类型,今天我们就来交大家怎么把字典写入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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值