python - 在python中解析csv字符串

标签 python string csv parsing

假设我有这样一个字符串

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/

相关文章:

python - 在python中导入excel csv文件

python - Pandas 连接不同行的值

c++ - 无论情况如何,字符串比较的小于运算符都会产生相同的结果

java - 将 double 格式设置为分数

python - 从 python 中的 csv 文件更新 xml 中的字典

Ruby 如何合并两个标题略有不同的 CSV 文件

python - 如何通过检测直线检测主体结构轮廓

python - 更改 matplotlib pyplot 图例中线条的线宽

Python:如何为多人游戏序列化对象?

php - 如何从 PHP 中的字符串中删除/删除最后一个字符