无法将列表文字转换为字符串

时间:2017-04-13 15:51:11

标签: python string list eval

input = "[{'parentId': '3660050', 'id': '3813419', 'name': 'Diversity Report', 'parentName': 'Uber Crises'}, {'parentId': '3447845', 'id': '3447846', 'name': 'High', 'parentName': 'QA Intensity'}, {'parentId': '3446939', 'id': '3446940', 'name': 'High', 'parentName': 'Intensity'}, {'parentId': '3447834', 'id': '3447842', 'name': 'Disgust', 'parentName': 'QA Emotion'}, {'parentId': '3447822', 'id': '3447823', 'name': 'Negative', 'parentName': 'QA Sentiment'}, {'parentId': '3446760', 'id': '3446763', 'name': 'Neutral', 'parentName': 'Original Sentiment'}, {'parentId': '3446944', 'id': '3446947', 'name': 'Negative', 'parentName': 'Aggregated_Sentiment'}, {'parentId': '3446936', 'id': '3446938', 'name': 'Not Spam', 'parentName': 'Spam'}, {'parentId': '3446924', 'id': '3446932', 'name': 'Disgust', 'parentName': 'Emotion'}, {'parentId': '3720161', 'id': '3720163', 'name': 'Uber', 'parentName': 'Uber & Lyft'}, {'parentId': '3660050', 'id': '3723667', 'name': ""Waymo vs. Uber's Otto"", 'parentName': 'Uber Crises'}, {'parentId': '3660050', 'id': '3723665', 'name': 'Uber Sexism', 'parentName': 'Uber Crises'}, {'parentId': '3660050', 'id': '3660077', 'name': '#DeleteUber', 'parentName': 'Uber Crises'}]"

ast.literal_eval(input)eval(input)仍为我提供字符串类型。

目标是获取我可以迭代的字典列表。

1 个答案:

答案 0 :(得分:0)

input = """[{'parentId': '3660050', 'id': '3813419', 'name': 'Diversity Report', 'parentName': 'Uber Crises'}, {'parentId': '3447845', 'id': '3447846', 'name': 'High', 'parentName': 'QA Intensity'}, {'parentId': '3446939', 'id': '3446940', 'name': 'High', 'parentName': 'Intensity'}, {'parentId': '3447834', 'id': '3447842', 'name': 'Disgust', 'parentName': 'QA Emotion'}, {'parentId': '3447822', 'id': '3447823', 'name': 'Negative', 'parentName': 'QA Sentiment'}, {'parentId': '3446760', 'id': '3446763', 'name': 'Neutral', 'parentName': 'Original Sentiment'}, {'parentId': '3446944', 'id': '3446947', 'name': 'Negative', 'parentName': 'Aggregated_Sentiment'}, {'parentId': '3446936', 'id': '3446938', 'name': 'Not Spam', 'parentName': 'Spam'}, {'parentId': '3446924', 'id': '3446932', 'name': 'Disgust', 'parentName': 'Emotion'}, {'parentId': '3720161', 'id': '3720163', 'name': 'Uber', 'parentName': 'Uber & Lyft'}, {'parentId': '3660050', 'id': '3723667', 'name': "Waymo vs. Uber's Otto", 'parentName': 'Uber Crises'}, {'parentId': '3660050', 'id': '3723665', 'name': 'Uber Sexism', 'parentName': 'Uber Crises'}, {'parentId': '3660050', 'id': '3660077', 'name': '#DeleteUber', 'parentName': 'Uber Crises'}]"""

上面的代码应该在eval调用下生成正确的结果,同时保留一个字符串中的撇号字符。这个错误特别与撇号有关。无论出于何种原因,它都无法使用转义字符正确评估,它可能会尝试创建一个字符串。这个解决方案有效,因为我只使用不同类型的字符串而不是转义字符。此外,如图所示,"Waymo vs. Uber's Otto"周围应该只有一个双引号。你可能认为你可以添加其他的,因为字符串没有正确突出显示,但这样做的目的是告诉你你犯了错误。