python处理csv
一、使用内置模块csv
1. 使用字典的形式取数据
import csv
with open("des_file.csv", 'r', encoding='utf-8)as f:
# 将每一行转化为以第一行索引为键,对应单元格内容为值的字典
f_csv = csv.DictReader(f)
for row in f_csv:
value = row['key']
print(value)
2. 使用列表的形式取数据
import csv
# endoing='utf-8' 中文编码问题
with open("des_file.csv", 'r', encoding='utf-8)as f:
# 将每一行数据组成一个列表,每个单元格是一个列表元素
f_csv = csv.reader(f)
# 指定列之间的分隔符--delimiter参数
writer = csv.writer(csvfile, delimiter=',')
print(type(f_csv)) # <class '_csv.reader'> 对象
for row in f_csv:
print(row) # 第一个元素列表是表头
print(type(row)) # <class 'list'>
3.列表数据写入csv
import csv
# endoing='utf-8' 中文编码问题
with open('des_file.csv', 'w', endoing='utf-8') as csvfile:
# 初始化写入对象
writer = csv.writer(csvfile)
# 修改列之间的分隔符--delimiter参数
writer = csv.writer(csvfile, delimiter=' ')
# writerow 写入一行数据,调用一次写入一行
writer.writerow(['key1', 'key2', 'key3']) # 表头
writer.writerow(['key1', 'key2', 'key3']) # 第一行
# writerow,调用一次写入多行 传入多维列表
writer.writerow([['key1', 'key2', 'key3'],['key1', 'key2', 'key3']])
4.字典数据写入csv
import csv
# endoing='utf-8' 中文编码问题
with open('des_file.csv', 'w', endoing='utf-8') as csvfile:
fieldnames = ['key1', 'key2', 'key3'] # 表头
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() # 先写入表头
# 以字典形式的数据写入一行
writer.writerow({'key1': 'value1', 'key2': 'value2', 'key3': 'value3'})
writer.writerow({'key1': 'value1', 'key2': 'value2', 'key3': 'value3'})
writer.writerow({'key1': 'value1', 'key2': 'value2', 'key3': 'value3'})
5.追加文件
打开csv文件,将“w”写模式改为“a”追加模式,此时不应该写入表头数据
import csv
# endoing='utf-8' 中文编码问题
with open('des_file.csv', 'w', endoing='utf-8') as csvfile:
fieldnames = ['key1', 'key2', 'key3'] # 表头
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
# 以字典形式的数据写入一行
writer.writerow({'key1': 'value1', 'key2': 'value2', 'key3': 'value3'})
二、使用一般文件读取方法
1. with open
# endoing='utf-8' 中文编码问题
with open("des_file.csv", 'r', endoing='utf-8')as f:
# 按行读取,单元格之间以逗号隔开(使用文本阅读器查看csv文件时显示的格式)
for line in f:
print(line)
三、pandas处理csv
1.读取
pip install pandas
import pandas as pd
data = pd.read_csv("des_file.csv")
print data
import pandas as pd
data = pd.read_table("des_file.csv",sep=",")
print data
2.写入
import pandas as pd
df = pd.DataFrame({'name': ['Raphael', 'Donatello'],
'mask': ['red', 'purple'],
'weapon': ['sai', 'bo staff']})
df.to_csv(index=False)
参考网址
https://www.py.cn/jishu/jichu/12705.html
https://www.py.cn/spider/advanced/14381.html
https://blog.csdn.net/xz1308579340/article/details/81106310
https://www.jianshu.com/p/339347ea516d
pandas处理csv
https://blog.csdn.net/liufang0001/article/details/77856255
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html
https://blog.csdn.net/qq_42052864/article/details/81607400 比较全
3、出现的一些错误
1.读取csv文件有中文路径,报错 OSError: Initializing from file failed
虽然使用的是Python3,但是仍读取文件失败。
在读取文件的时候加上参数 engine='python’
data = pd.read_csv(csv_path, sep=',', engine='python')
https://blog.csdn.net/qq_35318838/article/details/80564938 报错原因分析,内部代码有c