Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中解析csv字符串_Python_String_Csv_Parsing - Fatal编程技术网

在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模块一起使用的极好示例。