如何用逗号分隔一行,但忽略引号Python中的逗号

时间:2011-10-07 02:42:19

标签: python csv

  

可能重复:
  How to read a CSV line with "?

我已经看到了一些相关的问题但没有一个直接解决了我想要做的事情。 我正在阅读CSV文件中的文本行。

所有项目都在引号中,有些在引号内还有其他逗号。 我想用逗号分隔该行,但忽略引号内的逗号。 有没有办法在Python中执行此操作,不需要许多正则表达式语句。

一个例子是:

"114111","Planes,Trains,and Automobiles","50","BOOK"

我想将其解析为4个独立的值变量:

"114111"  "Planes,Trains,and Automobiles"  "50" "Book"

line.split()中有一个我遗漏的简单选项吗?

2 个答案:

答案 0 :(得分:31)

不要试图重新发明轮子。

如果您想从CSV文件中读取行,请使用标准库中的Python csv module

示例:

> cat test.py
import csv
with open('some.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
> cat some.csv
"114111","Planes,Trains,and Automobiles","50","BOOK"

> python test.py
['114111', 'Planes,Trains,and Automobiles', '50', 'BOOK']
[]

完成工作!

答案 1 :(得分:-5)

你可以分开","那是" [quote] [逗号] [quote]"

另一个选项是提出一个转义字符,所以如果有人想在字符串中嵌入一个逗号,那么他们会做\ c,如果他们想要反斜杠,他们会做\\。然后你必须拆分字符串,然后在处理之前取消它。