在python中解析csv字符串
假设我有一根这样的线在python中解析csv字符串,python,string,csv,parsing,Python,String,Csv,Parsing,假设我有一根这样的线 ab, "cd ef", gh, "ijk, lm" 还有这个 我想用python csv模块解析它们。我怎么做?第二条假设是两行,但第一条不是 我想它们需要加载到csv.reader()中,所以首先我想我需要用逗号将它们分开,所以使用.split(','),但是第二个字符串会有问题,因为它会忽略换行符,我也想到.splitline(),但是在这种情况下,它会弄乱第一个字符串 我花了一整天的时间来解决这个问题,但我已经没有主意了。
ab, "cd
ef", gh, "ijk, lm"
还有这个
我想用python csv模块解析它们。我怎么做?第二条假设是两行,但第一条不是
我想它们需要加载到csv.reader()
中,所以首先我想我需要用逗号将它们分开,所以使用.split(',')
,但是第二个字符串会有问题,因为它会忽略换行符,我也想到.splitline()
,但是在这种情况下,它会弄乱第一个字符串
我花了一整天的时间来解决这个问题,但我已经没有主意了。。。有什么帮助吗?您遇到的问题是在
,
后面有一个空格,因此在第一个示例中,实际的分隔符是,'
幸运的是,你不是第一个遇到这个问题的人。使用设置为True
求解
鉴于:
$ cat file1.csv
ab, "cd
ef", gh, "ijk, lm"
以及:
你可以做:
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']
len: 3, row: ['a', 'b', 'c']
len: 3, row: ['d', 'e', 'f']
同样的方言适用于第二个示例,该示例有一个true,
分隔符,没有尾随空格:
with open('file2.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']
len: 3, row: ['a', 'b', 'c']
len: 3, row: ['d', 'e', 'f']
谢谢,这很有帮助。然而。。。如果输入是原始字符串而不是csv文件本身,该怎么办?您可以使用或(取决于您的Python版本)允许csv库将字符串视为文件。是Tim Pietzcker将这些库与csv模块一起使用的极好示例。