从文件中读取列表列表作为python中的列表列表

Posted

技术标签:

【中文标题】从文件中读取列表列表作为python中的列表列表【英文标题】:Reading a list of lists from a file as list of lists in python 【发布时间】:2012-05-04 21:03:09 【问题描述】:

我以列表列表的形式收集数据并将数据写入文本文件。文本文件中的数据看起来像

[[123231,2345,888754],[223467,85645]]

我想读回它并将其存储在我的程序中的列表列表中。但是,当我从文件中执行read() 并尝试创建一个平面列表时,它将所有内容都作为一个字符串,并且解释完全改变了,我无法查询在 python 中作为普通列表读取后得到的结果。

有人可以帮助我阅读文件并以与列表列表相同的格式存储吗?

谢谢!

【问题讨论】:

你能让你的问题更干净吗? 【参考方案1】:

确保:

列表数据所在的文件是python文件 列表数据分配给一个变量 文件位于 python 模块中

然后您可以从 python 文件中导入列表。 例如说列表 my_list 在文件中 mylist.py

例如:

# This is the file mylist.py
my_list = [[123231,2345,888754],[223467,85645]]

然后您可以将 my_list 视为 python 列表

from mylist import my_list

for item in mylist:
   print "item = <", item, ">"

【讨论】:

【参考方案2】:

您也可以使用eval 来实现这一点,但其他解决方案可能更好:

# reading a list from a file
f = open('data.txt', 'r')
l = eval(f.read())

# storing a list to a file
outf = open('out','w')
outf.write(str(l))

有时使用eval 是一种不好的做法。更多信息请查看this post。

【讨论】:

【参考方案3】:

您可以改为 pickle 您的数据。保存:

>>> import pickle
>>> p= [[123231,2345,888754],[223467,85645]]  
>>> with open("data.txt", "wb") as internal_filename:
...     pickle.dump(p, internal_filename)

要加载它:

>>> with open("data.txt", "rb") as new_filename:
...     pp = pickle.load(new_filename)
>>> pp
[[123231, 2345, 888754], [223467, 85645]]

这对于更复杂的对象也很有用。

【讨论】:

【参考方案4】:

这看起来像是有效的JSON。

所以你可以简单地做:

import json
with open(myfilename) as f:
    lst = json.load(f)

要将“列表列表”存储在文件中,请执行以下操作

with open(myfilename, "w") as f:
    json.dump(lst, f)

【讨论】:

这是一个有效的 JSON?没有双引号。没有键值对。你能解释一下吗? @PranavNandan:为什么会有?并非所有 JSON 对象都是键/值对。 json.loads("[[123231,2345,888754],[223467,85645]]") 返回[[123231,2345,888754],[223467,85645]] 见en.wikipedia.org/wiki/JSON#Data_types,_syntax_and_example,特别是关于数组的部分。

以上是关于从文件中读取列表列表作为python中的列表列表的主要内容,如果未能解决你的问题,请参考以下文章

Python,将文件中的列表读取出来并作为列表赋给变量

从 excel 文件列中读取列表列表并将其存储在 python 列表中

从文本文件中读取句子并使用 Python 3 附加到列表中 [关闭]

将数据从 csv 读取到类对象列表中 - Python

如何在 Python 3 中从磁盘读取和编辑列表?

如何将 csv 文件转换为可作为文本读取的列表列表? Python