2011-10-07 93 views
8

可能重复:
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()一个简单的选择,我很想念?

+8

使用csv模块 – JBernardo

+0

@GregHewgill(和其他三个):不是真的重复。另一个问题特别对实现细节更感兴趣,而不是使用库。 – Johnsyweb

+1

“我正在从CSV文件中读取文本行。”那么你的问题真的是“我如何解析CSV文件?”询问你真正想要回答的问题。它经常为您和潜在的回答者节省很多时间。 –

回答

30

不要试图重新发明车轮。

如果要读取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

谢谢!,这给了我需要的信息。 :) – chrisfs

+0

@chrisfs:高兴地帮忙。 – Johnsyweb

-5

你大概可以分割的“”也就是‘[报价] [逗号] [报价]’

另一种选择是未来与一个转义字符,所以如果有人想嵌入在一个逗号字符串他们做\ c,如果他们想要一个反斜杠他们\\。然后你必须拆分字符串,然后在处理之前使用它。