好的,这是一个很奇怪的问题,但这是可行的。 我一直在阅读一个看起来像这样的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阅读器或熊猫的情况下进行所有操作,并且一切正常。问题是当我遇到如下所示的csv文件时:
Name,John,Susan,
Date,"3
/14/
2019",3/14/2019
Job,Doctor,Cashier
在读取数据时,它应该显示为“ 3 \ n / 14 / \ n2019”,但是我正在逐行读取文件,以便在不使用CSV eader或pandas的情况下进行读取,因此我拥有这个超级奇怪的算法在大约80%的时间内都可以捕获这样的事情。有人对此有解决方案吗?如果需要,我可以提供更多信息,如果可以的话,可以使用CSV阅读器或熊猫。谢谢!
答案 0 :(得分:2)
CSV阅读器可以使用多余的换行符来处理您的csv。
data.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']}