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)
正如问题中提到的,我试过csv模块。如果你能指出我在csv模块中有什么功能,那会很棒。我曾尝试 在csv.reader行([行]): 打印行 每本http://docs.python.org/2/library/csv.html#examples但没有成功 – markbse 2013-02-21 18:10:15
清楚了现在够了吗? – LtWorf 2013-02-21 22:50:15
谢谢。在等待时,我已经将源代码从CSV更改为JSON格式,因此未测试您的脚本,但会将其标记为答案。 – markbse 2013-02-23 22:33:10