请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

ast.literal_eval运行报错

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

正在回答 回答被采纳积分+3

2回答

慕哥9471875 2020-04-24 14:29:51

网上查了一下,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 回复 有任何疑惑可以回复我~
  • bobby #1
    这个回复很好
    回复 有任何疑惑可以回复我~ 2020-04-25 15:48:52
bobby 2019-06-05 10:58:49

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

import json

nodes_list = json.loads(nodes_str)

然后看看能不能行?

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕勒4383646 #1
    老师:
          用了json后出现如下报错:
    json.decoder.JSONDecodeError: Expecting value: line 1 column 8651 (char 8650)
    但用eval代替ast.literal_eval程序能运行,不知是否nodes_str的格式有问题?
    回复 有任何疑惑可以回复我~ 2019-06-05 22:04:29
  • bobby 回复 提问者 weixin_慕勒4383646 #2
    应该是有问题 你留下qq 我加你看看
    回复 有任何疑惑可以回复我~ 2019-06-10 16:55:10
  • 芥子啊 回复 bobby #3
    老师,我也遇到这位同学类似的问题,能请您解答一下吗
    回复 有任何疑惑可以回复我~ 2019-07-24 01:07:25
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号