簡體   English   中英

如何從文件創建嵌套字典列表

[英]How to create list of nested dictionaries from file

我有一個輸入文本文件,其中包含一個鍵/值對列表,我想將其作為字典列表讀入python但似乎無法使其按預期工作。 請注意,該文件是不是有效的JSON格式,所以我不能使用json內置的這個問題是不是重復這個 我懷疑我錯過了一些明顯的東西,所以任何指導都非常感謝。

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

由於這個文件包含一個包含2個元素的列表,我希望len為2並且typelist但這不是我所看到的。

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'>

您的data是一個字符串。 您可以使用literal_eval將其轉換為列表:

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

編輯:我之前沒有看到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'>

如果您正在嘗試存儲和檢索Python對象,那么序列化可能是更好的方法。 例如,參見泡菜模塊

但是,在目前的上下文中,您可以使用內置的Python eval函數來實現您的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM