ast.literal_eval运行报错

来源:14-7 分析和获取所有的版块 - 1

weixin_慕勒4383646

2019-06-03

老师:找您的代码在pycharm中写了一遍,但在运行到 nodes_list = ast.literal_eval(nodes_str)时报错IndentationError: unexpected indent。请问是什么原因,该如何处理?

写回答

2回答

慕哥9471875

2020-04-24

网上查了一下,ast.literal_eval和eval区别在于ast.literal_eval更安全,字符串必须要完全符合各类型(list、dict等)格式才能从字符串到类型的转换。

老师的代码抓取的字符串里面在最前面(也就是 '[' 前面)有一个缩进,导致整段字符串不符合list的规则。

 [{"name":"\u79fb\u52a8\u5f00\u53d1","url":"/forums/Mobile","childre....

将代码改成:node_list = ast.literal_eval(nodes_str[1:]),忽略第一个字符就可以。

2
1
bobby
这个回复很好
2020-04-25
共1条回复

bobby

2019-06-05

如果这里有错的话 你试试使用:

import json

nodes_list = json.loads(nodes_str)

然后看看能不能行?

0
5
芥子啊
回复
bobby
谢谢老师,完美解决了
2019-07-25
共5条回复

Python爬虫工程师实战 大数据时代必备

慕课网严选精品教程,高质量内容+服务!

2378 学习 · 1158 问题

查看课程