Skip to main content
 首页 » 编程设计

python之不必要的 "[' ', '' ]"当使用 python csv 模块解析 CSV 文件时

2025年05月04日16zdz8207

每个人。

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

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

谢谢。

请您参考如下方法:

使用 StringIO 将此字符串视为类文件对象

>>> 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.

您的代码的问题在于您将单个字符串传递给阅读器。然后读者将每个字符解释为行。例如。

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

大致是 csv 如何在您传递给它的可迭代对象上调用 next。但是,您使用表示多行字符串的双引号,这解释了为什么它们全部出现在一个片段中。