gpt4 book ai didi

python - 处理 .csv 中不需要的(独立)双引号

转载 作者:行者123 更新时间:2023-12-02 02:28:38 27 4
gpt4 key购买 nike

我正在尝试使用 Python 的 csv 模块读取格式不正确的 .csv 文件。凌乱的 CSV 看起来像这样:

"name","age","place","date"
"Jack","23","perth, australia","12aug
"Jackie","44","delhi, india","9dec
"Neel","12","austin, texas","1aug
"David","77","fresno, ca","21june

您会注意到每行末尾(日期列)缺少第二个双引号。

当我尝试使用以下代码轻松读取此文件时,我得到:

import csv
import os
temp = csv.reader(open('/Desktop/test csv/quote_test.csv', "r"), delimiter=',')
for row in temp:
print(row)
['name', 'age', 'place', 'date']
['Jack', '23', 'perth, australia', '12aug\nJackie"', '44', 'delhi, india', '9dec\nNeel"', '12', 'austin, texas', '1aug\nDavid"', '77', 'fresno, ca', '21june']

这是预期的,因为它读取当前行的最后一个元素和下一行的第一个元素(直到找到“, 匹配最后一个,”)作为单个条目 - 跳过所有换行符。

我的问题:- 有没有更好的方法来处理Python中如此困惑的csv,我们可以为每一行至少获得正确数量的预期列(也就是说,在这种情况下,有没有办法获得python 仍然考虑换行符),然后分别处理 <"12aug>、<"9dec> 等条目?如果没有,还有什么其他方法可以使用 python 更好地理解这些数据?

最佳答案

在将数据传递给 csv 读取器之前,您可以先检查行是否以 " 结尾,如果不存在,则附加一个 ":

import csv
import os

with open('/Desktop/test csv/quote_test.csv', "r") as f:
data = f.read().splitlines()
for i, line in enumerate(data):
if not line.endswith('"'):
data[i] = line + '"'
data = "\n".join(data)

temp = csv.reader(data, delimiter=',')
for row in temp:
print(row)

关于python - 处理 .csv 中不需要的(独立)双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65354842/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com