自动修复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虽然能修复缩进问题,但它的前提是代码的基本语法结构(比如用换行分隔不同的语句块)是清晰的。当所有if、elif、else和print都堆在一行时,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




