如何在Python中将文件转换为列表

时间:2017-10-31 20:43:28

标签: python-3.x list python-import

我正在尝试从导入文件中创建一个列表,但无法使其正常工作。

import csv

fileName = "/home/bluebird/Desktop/Deck"
# the file is this
# A,A,@,@,$,$,&,&,!,!,H,H,Z,Z,W,W

f = open(fileName, 'r')
reader = csv.reader(f)
allRows = [row for row in reader]

print(allRows)
size = len(allRows)
print(size)

我得到的结果是:

[['A', 'A', '@', '@', '$', '$', '&', '&', '!', '!', 'H', 'H','Z', 'Z', 'W', 'W']]
1

但是我想要得到:

['A', 'A', '@', '@', '$', '$', '&', '&', '!', '!', 'H', 'H', 'Z', 'Z', 'W', 'W']
16

2 个答案:

答案 0 :(得分:2)

line

reader = csv.reader(f)

read中的file将返回reader object。不是使用list-comprehension将其转换为list row data的{​​{1}},而是将其传递给list(),这更像是Pythonic:< / p>

allRows = list(reader)

现在,allRowslist listsrows)的row

由于file中只有一个allRows,因此[['A', 'A', '@', '@', '$', '$', '&', '&', '!', '!', 'H', 'H', 'Z', 'Z', 'W', 'W']] 为{/ 1}}:

length

allRowslen(allRows))的1将成为row - 因为list中只有一个row

如果您要提取第一个element,可以从row获取第一个listfirstRow = allRows[0] ):

print(firstRow)

然后如果你这样做:

['A', 'A', '@', '@', '$', '$', '&', '&', '!', '!', 'H', 'H', 'Z', 'Z', 'W', 'W']

你会得到:

print(len(firstRow))

16

会给你:

with

如您所愿:)

答案 1 :(得分:1)

好像你在列表中有一个列表。

快速修复

allRows = allRows[0]