从文本文件中加载 python 中的字典

Load a dictionary in python from text file

我有一个文本文件 config.txt,其中的数据格式如下。每个键值都在一个新行中。 值是一个字符串列表。

key_inv_single = ['invoice'] 
key_inv_number = ['invoice number', 'invoice no', 'invoice #', 'invoice#'] 
key_inv_date = ['invoice date', 'invoice dt', 'issue date', 'date of invoice', 'date of issue', 'issue dt', 'dt of issue'] 

我想将其反序列化为与文件同名的 python 字典。

{
key_inv_single : ['invoice'] 
key_inv_number : ['invoice number', 'invoice no', 'invoice #', 'invoice#'] 
key_inv_date : ['invoice date', 'invoice dt', 'issue date', 'date of invoice', 'date of issue', 'issue dt', 'dt of issue'] 
}

试试下面的方法。

from ast import literal_eval
file = open("example.txt")
output = {}
for line in file:
    your_line = line.strip().split('=')
    key = your_line[0]
    lst = literal_eval(your_line[1].strip())
    output[key] = lst

输出

{
'key_inv_single ': ['invoice'], 
'key_inv_number ': ['invoice number', 'invoice no', 'invoice #', 'invoice#'], 
'key_inv_date ': ['invoice date', 'invoice dt', 'issue date', 'date of invoice', 'date of issue', 'issue dt', 'dt of issue']
}

首先我们读取文件并将密钥分配给一个名为 key 的变量。然后我们使用 literal_eval 将值转换为实际的列表类型。然后我们将这些值添加到字典中。

当然这可以使用字典理解来完成,但它并不漂亮。

from ast import literal_eval
file = open("example.txt")
output = {line.strip().split('=')[0]:literal_eval(line.strip().split('=')[1].strip())for line in file}