从文件

时间:2017-05-24 12:59:40

标签: python

我有一个.txt文件,其中包含以下格式的dict:

{
 "key1": "value1",
 "key2": "value2",
}

我正在尝试将其读入变量,以便我可以使用它。我可以这样做:

    f = open('my_dict.txt', 'r')
    my_dict = eval(f.read())

但如果我尝试使用下面的内容,Python会在第一个“{”之后抱怨意外的EOF。

dict_from_file = []
with open('my_dict.txt', 'r') as inf:
        for line in inf:
            dict_from_file.append(eval(line))
print(dict_from_file)


     { 
     ^
SyntaxError: unexpected EOF while parsing

我确定它只是与文件中逐行格式化的所有事情有关。我想我可以重新格式化文件,以便用“,”替换换行符,但我喜欢在一行上具有每个键:值对的可读性。我希望能够使用with。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

问题是你不能直接eval('{'),它会引发错误:

SyntaxError: unexpected EOF while parsing

将它们附加到字符串'{"key1": "value1","key2": "value2",}',然后eval,它与您的代码my_dict = eval(f.read())

相同

试试这个:

dict_from_file = ''
with open('my_dict.txt', 'r') as inf:
    for line in inf:
        dict_from_file= dict_from_file+(line.strip())
print eval(dict_from_file)

输出:

{'key2': 'value2', 'key1': 'value1'}

答案 1 :(得分:1)

根据此json specification,这是一个格式错误的JSON文件,带有逗号。

使用json模块

可以很容易地将正确的json文件读入dict
$primary-color: #64b5f6;
$darken: darken($primary-color, 7%);
$lighten: lighten($primary-color, 20%);