使用python CSV modu解析CSV文件时不需要“['''',',]”

2024-04-19 23:03:19 发布

您现在位置:Python中文网/ 问答频道 /正文

所有人。你知道吗

我想把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']
['', '']
['', '']

我想知道如何删除不必要的['', ''],并将最后两个,,更改为""""

谢谢你。你知道吗


Tags: csvinforstringreaderjpgstprint
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', '', '']

使用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)

Return a reader object which will iterate over lines in the given csvfile. csvfile can be any object which supports the iterator protocol and returns a string each time its next() method is called — file objects and list objects are both suitable.

代码的问题是,您将单个字符串传递给reader。然后,读者将每个字符解释为一行。例如

>>> string=r'"20568078","240431","jpg","St, Carolina 1920",,'
>>> i = iter(string)
>>> next(i)
'"'
>>> next(i)
'2'

大约是csv如何调用传递给它的iterable上的next。但是,您使用双引号来表示多行字符串,这就解释了为什么它们都在一块中。你知道吗

相关问题 更多 >