我试图在python中读取文本文件的行到列表或数组 . 我只需要能够在创建后单独访问列表或数组中的任何项目 .
文本文件的格式如下:
0,0,200,0,53,1,0,255,...,0.
...
在上面的位置,实际的文本文件有数百或数千个项目 .
我正在使用以下代码尝试将文件读入列表:
text_file = open("filename.dat", "r")
lines = text_file.readlines()
print lines
print len(lines)
text_file.close()
我得到的输出是:
['0,0,200,0,53,1,0,255,...,0.']
1
显然,它将整个文件读入只有一个项目的列表,而不是单个项目的列表 . 我究竟做错了什么?
6 回答
您必须使用
split()
将字符串拆分为值列表所以,
你也可以使用numpy loadtxt
所以你想创建一个列表列表......我们需要从一个空列表开始
接下来,我们逐行阅读文件内容
一个常见的用例是柱状数据,但我们的存储单元是文件的行,我们已逐一阅读,因此您可能想要转置列表列表 . 这可以通过以下习语来完成
另一个常见用途是为每列提供一个名称
这样您就可以对同类数据项进行操作
我写的大部分内容都可以使用标准库中的
csv
模块加速 . 另一个第三方模块是pandas
,它允许您自动化典型数据分析的大多数方面(但具有许多依赖性) .更新在Python 2中
zip(*list_of_lists)
返回一个不同的(转置的)列表列表,在Python 3中情况发生了变化,zip(*list_of_lists)
返回了一个不可订阅的zip对象 .如果您需要索引访问,则可以使用
它为您提供了两个版本的Python列表 .
另一方面,如果你不需要索引访问,你想要的只是 Build 一个由列名索引的字典,一个zip对象就好了......
This question is asking how to read the comma-separated value contents from a file into an iterable list:
0,0,200,0,53,1,0,255,...,0.
The easiest way to do this is with the csv module as follows:
Now, you can easily iterate over spamreader like this:
See documentation for more examples.
python's file.readLines() method returns a list of the lines in the file:
现在你应该能够遍历x行数组 .
如果您想使用该文件而不必记得以后关闭它,请执行以下操作: