Python - 如何读取/解析csv像线?

问题描述:

我已经做了一些搜索,但大多数的答案是关于阅读一个完整的CSV文件,这些都不是我面临的问题。Python - 如何读取/解析csv像线?

我试图从网上使用的urllib2读取文件:

request = urllib2.Request('http://.../tv.txt') 
response = urllib2.urlopen(request) 
lines = response.readlines() 
for line in lines: 
    ... 

的“线”格式如下这些:

"ABC", "XYZ,MNO", "KLM" 
"ABC", "MN" 
"ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY" 

从上面可以看出,这些线实际上不是CSV线。列数不断变化。

有没有办法将每一行分割成一个列表?欲望的结果应该是:

["ABC", "XYZ,MNO", "KLM"] 
["ABC", "MN"] 
["ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"] 

我使用line.split(“”)尝试,但因为有每对双引号内逗号不能正常分裂。

请帮助我,如果你知道如何。非常感谢你。

Cheers,

PHP-Python-Java-MySQL-newbie。

使用csv模块,它可以满足您的需求。

yourstring= '"ABC", "XYZ,MNO", "KLM"\n"ABC", "MN"\n"ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"' 

import csv 
import StringIO 

class MyDialect(csv.Dialect): 
    strict = True 
    skipinitialspace = True 
    quoting = csv.QUOTE_ALL 
    delimiter = ',' 
    quotechar = '"' 
    lineterminator = '\n' 


b=StringIO.StringIO(yourstring) 
r=csv.reader(b,MyDialect()) 

for i in r: 
    print len(i), ':',' @ '.join(i) 
+1

正如问题中提到的,我试过csv模块。如果你能指出我在csv模块中有什么功能,那会很棒。我曾尝试 在csv.reader行([行]): 打印行 每本http://docs.python.org/2/library/csv.html#examples但没有成功 – markbse 2013-02-21 18:10:15

+0

清楚了现在够了吗? – LtWorf 2013-02-21 22:50:15

+0

谢谢。在等待时,我已经将源代码从CSV更改为JSON格式,因此未测试您的脚本,但会将其标记为答案。 – markbse 2013-02-23 22:33:10