You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

自动修复Python缩进问题:使用autopep8执行报错求助

嘿,我来帮你搞定这个缩进问题和autopep8报错的事儿!

先给你修复好缩进的正确代码

这是符合Python语法规范的版本:

if age > 18:
    if salary > 100000:
        print('success')
    elif salary < 50000:
        print('fail')
    else:
        print('get_more_info')
else:
    print('fail')
为什么autopep8会报错?

你遇到的问题是因为原始代码完全没有换行,把所有逻辑都挤在了一行。autopep8虽然能修复缩进问题,但它的前提是代码的基本语法结构(比如用换行分隔不同的语句块)是清晰的。当所有ifelifelseprint都堆在一行时,autopep8根本无法识别每个分支对应的父级语句,自然会抛出语法错误。

解决办法有两个,任你选:

方法1:先手动拆分换行,再用autopep8修复

先把你的原始代码按逻辑拆分出换行(不用管缩进对错):

if age > 18:
if salary > 100000:
print('success')
elif salary < 50000:
print('fail')
else:
print('get_more_info')
else:
print('fail')

再把这段代码传入autopep8.fix_code(),它就能正确识别结构并自动修复缩进了。

方法2:换用容错性更强的格式化工具——Black

如果经常处理这类完全没有格式的代码,Black工具的容错能力比autopep8强得多,它能直接处理一行到底的代码并输出规范格式。

首先安装Black:

pip install black

然后在Python中使用:

import black

# 把你的原始代码传入这里
unformatted_code = "if age > 18: if salary > 100000: print('success') elif salary < 50000: print('fail') else: print('get_more_info') else: print('fail')"
fixed_code = black.format_str(unformatted_code, mode=black.FileMode())
print(fixed_code)

运行后就能直接得到格式完美的代码啦。

内容的提问来源于stack exchange,提问作者Petr Petrov

火山引擎 最新活动