eval无法将DataFrame中类字典格式字符串转为字典该如何解决?
错误原因
- 核心问题是你多余地给原字符串额外包裹了引号:原
taglist本身就是符合Python字典字面量格式的字符串,你额外加双/三引号后,传入eval的内容变成了「字符串字面量」,执行后自然返回字符串类型,不可能得到字典 - 之前的语法报错是因为你加的外层双引号,和字符串内部本身存在的双引号(比如报错信息里的
"1990's")发生了转义冲突,触发语法错误
最优解决方案
不要用eval,风险极高(如果字符串里有恶意代码会直接执行),推荐用Python标准库ast提供的literal_eval,专门用于安全解析Python字面量(字典、列表、元组等),自动处理引号、特殊字符等问题,比eval稳定安全得多。
pandas场景下不需要写循环,直接用apply批量处理整列即可:
import ast import pandas as pd # 直接对tags列批量转换,一行搞定 main_data["tag_dict"] = main_data["tags"].apply(ast.literal_eval)
转换后tag_dict列的每一行都是标准字典类型,可以直接取键值。
内容的提问来源于stack exchange,提问作者NearTheHere
相关产品推荐
相关产品推荐

