我有一个功能:
def csvToList( filename ):
with open(filename, 'r') as fp:
reader = csv.reader(fp)
myList = list(reader)
return myList
并将其命名为:
fruitList = csvToList('fruit.csv')
fruit.csv的内容是:
apple,orange,kiwi,tomato
fruitList的值是列表列表:
[['apple', 'orange', 'kiwi', 'tomato']]
为什么这段代码会生成一个列表列表而不仅仅是一个简单的" flat"列表,像这样:
['apple', 'orange', 'kiwi', 'tomato']
答案 0 :(得分:2)
读者从CSV文件中生成行。请参阅documentation:
从csv文件读取的每一行都作为字符串列表返回。
这里的文件只包含1行,这并不重要; list(reader)
生成一个所有行的列表,即0,1或2000万。因此,只有一行的文件会为您提供一个包含该行的列表。
如果您只想要一行,请使用next()
function迭代一步:
def csvToList( filename ):
with open(filename, 'r') as fp:
reader = csv.reader(fp)
return next(reader, [])
next(reader, [])
告诉函数返回一个空列表,如果reader
根本没有产生任何内容。