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

好的,所以这是一个有点奇怪的问题,但这里是。我一直在阅读一个看起来像这样的 csv 文件:


Name,John,Susan,

Date,3/14/2019,3/14/2019

Job,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/2019

Job,Doctor,Cashier

读入数据时,它应该显示为“3\n/14/\n2019”,但是我正在逐行读取文件以便在没有 CSV 读卡器或熊猫的情况下执行此操作,因此我有这个超级奇怪的算法80% 的时间都可以捕捉到这样的事情。有没有人有解决方案?如果需要,我可以提供更多信息,并且如果可能的话,我愿意使用 CSV 阅读器或 Pandas。谢谢!


饮歌长啸
浏览 268回答 1
1回答

LEATH

CSV 阅读器可以使用额外的换行符处理您的 csv。数据.csvName,John,Susan,Date,"3/14/2019",3/14/2019Job,Doctor,Cashier代码import csvmyDict = {}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 csvmyDict = {}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']}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java