我遇到了问题,我已经看到将文本文件转换为字典的问题,但我认为问题是文本文件是字典的字典,我似乎无法找到解决方案。
代码:
# importing the module
import ast
# reading the data from the file
with open('emoji_data.txt', encoding="utf8") as f:
data = f.read()
print("Data type before reconstruction : ", type(data))
data = ast.literal_eval(data)
print("Data type before reconstruction : ", type(data))
错误:
ValueError: malformed node or string: <ast.Name object at 0x0000020FBD4345E0>
. txt文件:
EMOJI_DATA = {
u'U0001F947': { # 🥇
'en' : ':1st_place_medal:',
'status' : fully_qualified,
'E' : 3,
'de': ':goldmedaille:',
'es': ':medalla_de_oro:',
'fr': u':médaille_d’or:',
'pt': ':medalha_de_ouro:',
'it': u':medaglia_d’oro:',
'fa': u':مدال_طلا:'
},
u'U0001F948': { # 🥈
'en' : ':2nd_place_medal:',
'status' : fully_qualified,
'E' : 3,
'de': ':silbermedaille:',
'es': ':medalla_de_plata:',
'fr': u':médaille_d’argent:',
'pt': ':medalha_de_prata:',
'it': u':medaglia_d’argento:',
'fa': u':مدال_نقره:'
},
u'U0001F949': { # 🥉
'en' : ':3rd_place_medal:',
'status' : fully_qualified,
'E' : 3,
'de': ':bronzemedaille:',
'es': ':medalla_de_bronce:',
'fr': u':médaille_de_bronze:',
'pt': ':medalha_de_bronze:',
'it': ':medaglia_di_bronzo:',
'fa': u':مدال_برنز:'
},
对文本文件的一些注释:
-
如果您包含的文本文件捕获了所有文本,那么最后一行需要以另一个'}'结尾,而不是逗号。
-
ast.literal_eval()不适用于python变量别名。文本文件包含这个' fullly_qualified '别名:
u'U0001F947': { # 🥇
'en' : ':1st_place_medal:',
'status' : fully_qualified,
这个变量别名不能与ast.literal_eval()一起使用。