如何从文件创建嵌套词典列表

时间:2018-10-12 03:34:00

标签: python python-3.x

我有一个输入文本文件,其中包含一个键/值对列表,我希望将其作为字典列表读入python,但似乎无法使其按预期工作。请注意,该文件不是有效的json格式的 not ,因此我无法使用内置的json,并且此问题不是{{3}的重复项}。我怀疑这里缺少明显的东西,因此不胜感激。

# /tmp/tmp.txt
[{'k1': {'k2': {'k3': ['a', 'b', 'c']}}}, {'k4': {'k5': {'k6': ['v', 'x', 'y', 'z']}}}]

由于此文件包含一个包含2个元素的列表,所以我希望len为2,而typelist,但这不是我所看到的。 / p>

with open('/tmp/tmp.txt', encoding='utf-8') as data_file:
    data = data_file.read()

print(len(data)) # <-- the goal is for this to show 2
print(type(data)) # <-- the goal is for this to return `list`

输出:

88
<class 'str'>

3 个答案:

答案 0 :(得分:2)

您的data是一个字符串。您可以使用literal_eval将其转换为列表:

import ast
data_list = ast.literal_eval(data)
len(data_list)
#2

答案 1 :(得分:1)

编辑:我之前没有看到DYZ在我面前回答,但是我想再解释一下我的答案。

有一个名为“ ast”的模块,其功能为“ literal_eval”,顾名思义,该模块将txt的信息作为python代码进行评估,并验证输入。

import os, ast

with open('/tmp/tmp.txt', encoding='utf-8') as data_file:
    data = ast.literal_eval(data_file.read())

print(len(data))
print(type(data))

输出:

2
<class 'list'>

答案 2 :(得分:-1)

如果您尝试存储和检索Python对象,则序列化可能是一种更好的方法。例如,参见pickle module

但是,在当前情况下,您可以使用内置的Python eval函数来实现您的目标。

相关问题