Python读取文件中字典序列时pickle报错的解决求助
解决读取文件中字典序列的问题
你的文件GFG.txt里是纯文本形式的Python字典字符串,而pickle模块是用来读取通过pickle.dump()序列化的二进制数据,这就是你报错的根本原因——用错了工具。
正确解决方案:使用ast.literal_eval()
ast.literal_eval()可以安全解析字符串形式的Python字面量(包括字典、列表等),完美适配你的文件格式:
import ast dictionary_list = [] # 逐行读取文件并解析字典 with open('GFG.txt', 'r', encoding='utf-8') as f: for line in f: # 跳过空行(如果有的话) line = line.strip() if line: dict_obj = ast.literal_eval(line) dictionary_list.append(dict_obj) # 验证结果 for d in dictionary_list: print(d) print(type(d))
为什么不用json?
你的字典里包含True(Python布尔值,首字母大写)和单引号,而JSON格式要求布尔值是小写的true,且字符串必须用双引号,直接用json.loads()会报错。ast.literal_eval()则完全兼容Python的语法规则,更适合处理这种场景。
内容的提问来源于stack exchange,提问作者HappyPy
相关产品推荐
相关产品推荐

