从文件中读取列表列表作为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中的列表列表的主要内容,如果未能解决你的问题,请参考以下文章
从 excel 文件列中读取列表列表并将其存储在 python 列表中