我正在尝试从导入文件中创建一个列表,但无法使其正常工作。
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
答案 0 :(得分:2)
line
:
reader = csv.reader(f)
read
中的file
将返回reader
object
。不是使用list-comprehension
将其转换为list
row
data
的{{1}},而是将其传递给list()
,这更像是Pythonic:< / p>
allRows = list(reader)
现在,allRows
是list
lists
(rows
)的row
。
由于file
中只有一个allRows
,因此[['A', 'A', '@', '@', '$', '$', '&', '&', '!', '!', 'H', 'H', 'Z', 'Z', 'W', 'W']]
为{/ 1}}:
length
allRows
(len(allRows)
)的1
将成为row
- 因为list
中只有一个row
如果您要提取第一个element
,可以从row
获取第一个list
(firstRow = allRows[0]
):
print(firstRow)
然后如果你这样做:
['A', 'A', '@', '@', '$', '$', '&', '&', '!', '!', 'H', 'H', 'Z', 'Z', 'W', 'W']
你会得到:
print(len(firstRow))
和
16
会给你:
with
如您所愿:)
答案 1 :(得分:1)
好像你在列表中有一个列表。
快速修复
allRows = allRows[0]