如何使用Python读取和写入CSV文件?
我有一个包含内容的文件如何使用Python读取和写入CSV文件?,python,csv,Python,Csv,我有一个包含内容的文件example.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 如何使用Python阅读这个example.csv 同样,如果我有 data = [(1, "A towel,", 1.0), (42, " it says, ",
example.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
如何使用Python阅读这个example.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)]
如何使用Python将
数据写入CSV文件?以下是一些如何读取CSV文件以及如何使用Python写入CSV文件的最简单完整示例
Python 3:读取CSV文件
纯Python
import csv
# Define data
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),
]
# Write CSV file
with open("test.csv", "wt") as fp:
writer = csv.writer(fp, delimiter=",")
# writer.writerow(["your", "header", "foo"]) # write header
writer.writerows(data)
# Read CSV file
with open("test.csv") as fp:
reader = csv.reader(fp, delimiter=",", quotechar='"')
# next(reader, None) # skip the headers
data_read = [row for row in reader]
print(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版本在()之前就已经出现了,但是。删除Python2内容大大简化了这个答案
相关的
- :如果您希望使用Flask动态提供CSV,而不实际将CSV存储在服务器上,那么这很有趣
微处理器
查看我的实用程序包,了解一个超级简单且易于记忆的实用程序包:
import mpu.io
data = mpu.io.read('example.csv', delimiter=',', quotechar='"', skiprows=None)
mpu.io.write('example.csv', data)
熊猫
有关更多信息,请参阅。请注意,pandas会自动推断是否存在标题行,但您也可以手动设置标题行
如果你没听说过,我建议你看看
其他
许多其他库都支持读取CSV文件,例如:
创建的CSV文件
通用文件结尾
.csv
处理数据
将CSV文件读取到元组/dict列表或熊猫数据帧后,它只需处理此类数据。没什么特别的
选择
- JSON:非常适合编写人类可读的数据;非常常用()
- CSV:超简单格式()
- YAML:很好读,类似于JSON()
- pickle:一种Python序列化格式()
- ():更紧凑的表示法()
- ():很适合矩阵()
- XML:也存在*叹息*(&)
对于您的应用程序,以下内容可能很重要:
- 其他编程语言的支持
- 阅读/写作表现
- 紧凑度(文件大小)
另见:
如果您正在寻找制作配置文件的方法,您可能需要阅读我的短文编写CSV文件
首先,您需要导入csv
例如:
import csv
with open('eggs.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
使用熊猫读取csv文件
use pd.read_csv("D:\\sample.csv")
using only python :
fopen=open("D:\\sample.csv","r")
print(fopen.read())
创建并写入csv文件
下面的示例演示如何创建和写入csv文件。要制作一个动态文件编写器,我们需要导入一个包导入csv,然后需要创建一个具有文件引用的文件实例,例如:
with open("D:\sample.csv","w",newline="") as file_writer
这里,如果文件不存在于所提到的文件目录中,那么python将在指定的目录中创建一个相同的文件,w
表示写入,如果要读取文件,则用r
替换w
,或者附加到现有文件中,然后a
newline=“”
指定每次创建行时它都会删除一个额外的空行,因此为了消除空行,我们使用newline=“”
,使用如下列表创建一些字段名(列名):
fields=["Names","Age","Class"]
然后应用于writer实例,如:
writer=csv.DictWriter(file_writer,fieldnames=fields)
这里使用Dictionary writer并分配列名,要将列名写入csv,我们使用writer.writeheader()
,要写入值,我们使用writer.writerow({“names”:“John”,“Age”:20,“Class”:“12A”})
,而写入文件值必须使用Dictionary方法传递,这里的键是列名,值是您各自的键值
导入csv:
with open("D:\sample.csv","w",newline="") as file_writer:
fields=["Names","Age","Class"]
writer=csv.DictWriter(file_writer,fieldnames=fields)
writer.writeheader()
writer.writerow({"Names":"John","Age":21,"Class":"12A"})
如果需要-在不使用csv模块的情况下读取csv文件:
rows = []
with open('test.csv') as f:
for line in f:
# strip whitespace
line = line.strip()
# separate the columns
line = line.split(',')
# save the line for use later
rows.append(line)
这是一个很好的例子,因为我刚刚发现了很多重复的问题,这些问题的框架不同,但本质上就是这个问题。重复的例子:……当你搜索“@icedwater”时,会出现更多重复的问题。这是一种可能。但是,我更喜欢熊猫:(1)它会自动处理标题(2)它直接从路径加载文件,不需要文件指针(3)它有更好的“导出”选项(如dict导出-是的,你也可以用CSV来实现。但是熊猫更简单)。但是,请随意发布一个解决方案,不需要熊猫:-)谢谢,我想知道,因为您使用了csv
进行写作。我更喜欢csv
或pandas
,而csv
胜过pandas
,因为它很可能已经存在了。@icedwater好的,我添加了一个纯csv
解决方案(现在在结构上也与我对其他文件格式(如YAML和JSON)的回答一致)@Aran Fey谢谢!我不知道。我修好了@阿兰菲再次感谢:-)我更改了代码,并将在下班后调整mpu。。。正确阅读CSV比它应该的要复杂^^^虽然这段代码可能是一个有效的答案,但一些解释可能会有所帮助。不确定这在现有答案上增加了什么
writer=csv.DictWriter(file_writer,fieldnames=fields)
with open("D:\sample.csv","w",newline="") as file_writer:
fields=["Names","Age","Class"]
writer=csv.DictWriter(file_writer,fieldnames=fields)
writer.writeheader()
writer.writerow({"Names":"John","Age":21,"Class":"12A"})
rows = []
with open('test.csv') as f:
for line in f:
# strip whitespace
line = line.strip()
# separate the columns
line = line.split(',')
# save the line for use later
rows.append(line)