这里是一些使用Python读取CSV文件和写入CSV文件的最小完整示例。
纯Python:
import csv
data = [
(1, "A towel,", 1.0),
(42, " it says, ", 2.0),
(1337, "is about the most ", -1),
(0, "massively useful thing ", 123),
(-2, "an interstellar hitchhiker can have.", 3),
]
with open("test.csv", "wt") as fp:
writer = csv.writer(fp, delimiter=",")
writer.writerows(data)
with open("test.csv") as fp:
reader = csv.reader(fp, delimiter=",", quotechar='"')
data_read = [row for row in reader]
print(data_read)
之后,data_read
的内容为:
[['1', 'A towel,', '1.0'],
['42', ' it says, ', '2.0'],
['1337', 'is about the most ', '-1'],
['0', 'massively useful thing ', '123'],
['-2', 'an interstellar hitchhiker can have.', '3']]
请注意,CSV 只能读取字符串。您需要手动将其转换为列类型。
此前曾提供过适用于 Python 2+3 的版本(
链接),但现在已经
停止支持 Python 2。删除 Python 2 的内容大大简化了该答案。
相关问题
mpu
请查看我的实用程序包
mpu
,它提供了一个超级简单、易记的实用方法:
import mpu.io
data = mpu.io.read('example.csv', delimiter=',', quotechar='"', skiprows=None)
mpu.io.write('example.csv', data)
Pandas
import pandas as pd
df = pd.read_csv('myfile.csv', sep=',')
print(df)
tuples = [tuple(x) for x in df.values]
dicts = df.to_dict().values()
点击查看read_csv
文档以获取更多信息。请注意,Pandas会自动推断是否存在标题行,但您也可以手动设置它。
如果您还没有听说过Seaborn,我建议您去了解一下。
其他
读取CSV文件也受到其他许多库的支持,例如:
创建CSV文件
1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3
常见的文件后缀名
.csv
处理数据
将CSV文件读入元组/字典列表或Pandas数据框之后,就可以简单地使用这种类型的数据。没有必要进行特定于CSV格式的操作。
替代方案
对于您的应用程序,以下可能很重要:
- 其他编程语言的支持
- 读/写性能
- 紧凑性(文件大小)
另请参阅:数据序列化格式比较
如果您更愿意寻找一种创建配置文件的方法,可以阅读我的简短文章:Python中的配置文件