为了账号安全,请及时绑定邮箱和手机立即绑定

水平读取 CSV 文件并忽略换行符

水平读取 CSV 文件并忽略换行符

饮歌长啸 2021-12-09 10:20:26
好的,所以这是一个有点奇怪的问题,但这里是。我一直在阅读一个看起来像这样的 csv 文件:Name,John,Susan,Date,3/14/2019,3/14/2019Job,Doctor,Cashier每一行的第一个字符串是我想添加到字典中的键,所以它看起来像这样:{"Name": ["John", "Susan"], "Date": ["3/14/2019, "3/14/2019"], "Job": ["Doctor", "Cashier"]}由于数据的水平方面,我一直在不使用 CSV 阅读器或 Pandas 的情况下完成这一切,并且一切正常。问题是当我遇到一个如下所示的 csv 文件时:Name,John,Susan,Date,"3/14/2019",3/14/2019Job,Doctor,Cashier读入数据时,它应该显示为“3\n/14/\n2019”,但是我正在逐行读取文件以便在没有 CSV 读卡器或熊猫的情况下执行此操作,因此我有这个超级奇怪的算法80% 的时间都可以捕捉到这样的事情。有没有人有解决方案?如果需要,我可以提供更多信息,并且如果可能的话,我愿意使用 CSV 阅读器或 Pandas。谢谢!
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

CSV 阅读器可以使用额外的换行符处理您的 csv。


数据.csv


Name,John,Susan,

Date,"3

/14/

2019",3/14/2019

Job,Doctor,Cashier

代码


import csv

myDict = {}

with open("data.csv") as file:

    for line in csv.reader(file):

        myDict[line[0]] = line[1:]

print(myDict)

{'Name': ['John', 'Susan', ''], 'Date': ['3\n/14/\n2019', '3/14/2019'], 'Job': ['Doctor', 'Cashier']}

但是,这并没有解决这样一个事实,即您最终以空字符串作为字典中的第三个名称,因为原始 csv 具有该结尾逗号。我通过添加以下 if 语句解决了这个问题。


import csv

myDict = {}

with open("members.txt") as file:

    for line in csv.reader(file):

        if line[-1] == "":

            myDict[line[0]] = line[1:-1]

        else:

            myDict[line[0]] = line[1:]

print(myDict)

{'Name': ['John', 'Susan'], 'Date': ['3\n/14/\n2019', '3/14/2019'], 'Job': ['Doctor', 'Cashier']}



查看完整回答
反对 回复 2021-12-09
  • 1 回答
  • 0 关注
  • 267 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信