大家。
我想将csv "20568078","240431","jpg","St, Carolina 1920",,
解析为["20568078","240431","jpg","St, Carolina 1920","",""]
使用这个:
string=r'"20568078","240431","jpg","St, Carolina 1920",,'
reader = csv.reader(string)
for r in reader:
print (r)
我得到了输出:
['20568078']
['', '']
['240431']
['', '']
['jpg']
['', '']
['St, Carolina 1920']
['', '']
['', '']
我想了解如何删除不必要的['', '']
,并将最后两个,,
更改为""
和""
谢谢。
答案 0 :(得分:4)
使用StringIO
将此stings视为类似文件的对象
>>> import csv
>>> from StringIO import StringIO
>>> string=r'"20568078","240431","jpg","St, Carolina 1920",,'
>>> for r in csv.reader(StringIO(string)):
print (r)
['20568078', '240431', 'jpg', 'St, Carolina 1920', '', '']
http://docs.python.org/2/library/csv.html#csv.reader
csv.reader(csvfile, dialect='excel', **fmtparams)
返回一个读取器对象,该对象将迭代给定
csvfile
中的行。csvfile
可以是支持迭代器协议的任何对象,并且每次调用其next()
方法时都返回一个字符串 -file
对象和list
对象都适合。
您的代码存在的问题是您将单个字符串传递给reader
。然后,读者将每个字符解释为行。例如。
>>> string=r'"20568078","240431","jpg","St, Carolina 1920",,'
>>> i = iter(string)
>>> next(i)
'"'
>>> next(i)
'2'
大约是csv
在您传递给它的可迭代项上调用next
的方式。但是,你使用代表多行字符串的双引号来解释为什么它们都是一体的。
答案 1 :(得分:2)
您可以将字符串列表传递给csv.reader
构造函数:
>>> import csv
>>> string=r'"20568078","240431","jpg","St, Carolina 1920",,'
>>> reader = csv.reader([string])
>>> print reader.next()
['20568078', '240431', 'jpg', 'St, Carolina 1920', '', '']