在 Python 中读取和写入 CSV 文件
Posted
技术标签:
【中文标题】在 Python 中读取和写入 CSV 文件【英文标题】:Read and write CSV file in Python 【发布时间】:2022-01-23 08:38:30 【问题描述】:我正在尝试读取 csv 文件中的句子,将它们转换为小写并保存在其他 csv 文件中。
import csv
import pprint
with open('dataset_elec_4000.csv') as f:
with open('output.csv', 'w') as ff:
data = f.read()
data = data.lower
writer = csv.writer(ff)
writer.writerow(data)
但我收到错误“_csv.Error: sequence expected”。我该怎么办? *我是初学者。请对我好一点:)
【问题讨论】:
with open('dataset_elec_4000.csv', 'r') as f:
?
您介意分享 csv 文件的一部分,以便我可以分享更多自定义答案吗?
data = data.lower
不返回小写字符串。它返回lower
函数对象。你需要调用函数:data = data.lower()
.
但是,您将整个文件作为一个字符串读取。您不能使用csv.writer
来写入结果,因为您没有读取行。只需执行:ff.write( f.read().lower())
。
数据是这样的 "这个机箱很漂亮。我想不出有什么我不喜欢的。我使用了一个更小尺寸的 GTX 750,它可以让你看到里面的所有东西。更大的视频卡挡住了你的视线(可能是设计使然)", "1.0", "非常失望。这个项目工作了一两次,但从来没有持续过。我更换了电池,但还是不行工作。我按照公司的指示让它工作。不要浪费你的钱。", "0.0", ...
【参考方案1】:
您需要逐行读取输入的 CSV,并对每一行进行转换,然后将其写出:
import csv
with open('output.csv', 'w', newline='') as f_out:
writer = csv.writer(f_out)
with open('dataset_elec_4000.csv', newline='') as f_in:
reader = csv.reader(f_in)
# comment these two lines if no input header
header = next(reader)
writer.writerow(header)
for row in reader:
# row is sequence/list of cells, so...
# select the cell with your sentence, I'm presuming it's the first cell (row[0])
data = row[0]
data = data.lower()
# need to put data back into a "row"
out_row = [data]
writer.writerow(out_row)
【讨论】:
【参考方案2】:Python 包含一个名为 csv 的模块,用于处理 CSV 文件。模块中的 reader 类用于从 CSV 文件中读取数据。首先,CSV 文件在 'r' 模式(指定打开文件时指定读取模式)下使用 open() 方法打开,该方法返回文件对象,然后使用 CSV 模块的 reader() 方法读取它,该方法返回遍历指定 CSV 文档中各行的 reader 对象。
import csv
# opening the CSV file
with open('Giants.csv', mode ='r')as file:
# reading the CSV file
csvFile = csv.reader(file)
# displaying the contents of the CSV file
for lines in csvFile:
print(lines)
【讨论】:
他已经在使用csv
模块。你没看到吗?他只是用错了。以上是关于在 Python 中读取和写入 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章