假设我有这样一个字符串
ab, "cd
ef", gh, "ijk, lm"
和这个
a,b,c
d,e,f
我想用 python csv 模块解析它们。我该怎么做?第二行假设是两行,但第一行不是。
我认为它们需要加载到 csv.reader()
中,所以首先想到我需要用逗号分隔它们,所以使用了 .split(',')
但它在第二个字符串上会有问题,因为它会忽略换行符,我也想到了 .splitline()
但在这种情况下它会弄乱第一个字符串..
一整天都在尝试解决这个问题,但我没有主意……有什么帮助吗?
最佳答案
您遇到的问题是您在 ,
之后有一个空格,因此在第一个示例中您的实际分隔符是 ', '
。
幸运的是,您不是第一个遇到此问题的人。使用 csv.skipinitialspace设置为 True
来求解。
给定:
$ cat file1.csv
ab, "cd
ef", gh, "ijk, lm"
和:
$ cat file2.csv
a,b,c
d,e,f
你可以这样做:
with open('file1.csv', 'r') as f:
for row in csv.reader(f, quotechar='"',skipinitialspace=True):
print(f"len: {len(row)}, row: {row}")
打印:
len: 4, row: ['ab', 'cd\nef', 'gh', 'ijk, lm']
同样的方言适用于第二个例子,它有一个真正的 ,
分隔符,没有尾随空格:
with open('file2.csv', 'r') as f:
for row in csv.reader(f, quotechar='"',skipinitialspace=True):
print(f"len: {len(row)}, row: {row}")
打印:
len: 3, row: ['a', 'b', 'c']
len: 3, row: ['d', 'e', 'f']
关于python - 在python中解析csv字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64012692/