Pythonast.literal_评估返回格式错误的字符串E

2024-10-03 13:31:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试使用ast.literal_eval方法将列表列表的字符串表示形式转换为列表列表列表。我试着看看这个社区的以下问题:

  1. Malformed String ValueError ast.literal_eval() with String representation of Tuple
  2. python ast.literal_eval throwing malformed string error given “datetime.datetime.now()”

但所提供的解决方案和答案似乎并不适用于我的情况。在

我目前有一个Pandas数据帧的形式(示例):

industry     index     entities
cars         0         [ ['car1', 'it'], ['them', 'car2', 'car3'] ]
cars         1         [ ['car4', 'its'], ['car5', 'car6'] ]

当我使用pandas.read_csv加载CSV文件时,entities列中的条目是列表的字符串表示。我试图使用ast.literal_eval将它们转换为列表,但发生了以下情况:

^{pr2}$

我知道在ast.literal_eval中使用的参数必须是Python文本结构,但是我传递的参数中没有任何内容不是Python文本,所以这似乎不是问题所在。在

为了提供一些额外的背景信息,我以前用同样的方法执行了一个相同的操作,效果很好。但是,我最近修改了原始数据帧,删除了单词“the”的实例

是什么导致了这个错误?如有任何提示,我们将不胜感激。非常感谢。在

编辑

df.head(2).to_dict()返回以下内容。注意,这个例子与原来的数据框不同,因为我的工作框架是这样的:

{'industry': {0: 'automotiveEngineering', 1: 'automotiveEngineering'},
 'index': {0: 0, 1: 1},
 'entities': {0: "[['Norway', 'it'], ['EQC—and', 'it', 'EQC', 'EQC'], ['Mercedes-Benz EQC Edition 1886 electric SUV', 'it', 'it', 'EQC400 4Matic crossover']]",
  1: '[[\'Ford Fusion\', \'Fusion\', \'Fusion\', \'Fusion\'], ["2013–2016 Ford Fusion sedans.automaker \'s", \'automaker\'], [\'Ford\', \'Ford\'], [\'faulty shifter cables that can cause rollaways\', \'these shifter cables , which can break off transmission due to a bad bushing at connection point\'], [\'these bushings\', \'them\']]'}}

我也尝试过循环遍历每一行并分别修改每个实体,但仍然会出现相同的错误。在

我还想补充一下,当我在一行上运行ast.literal_eval时,它会毫无问题地返回适当的值。在

编辑2

我通过跑步实现了我的目标:

df['column'] = df['column'].apply(ast.literal_eval)

但不幸的是,这并不能回答我最初的问题:是什么导致了格式错误的字符串/节点错误。在


Tags: 方法字符串df列表string错误evalit