Python 模板代码的缩进混淆

我得到这个错误 unindent does not match any outer indentation level就行了


if line.find('ubox')>0

我对 python 不是很有经验,但在我的 IDE 中按 Shift Tab 不能解决问题。这是我的一项作业中的模板代码,所以当我复制粘贴时,它一定弄乱了缩进。在给定的文本文件中,如果排队但只是盯着代码,我会认为它是 elif 中的嵌套 if。


def parse_dot_ps_file(filepath):

    '''

    Parsing of a dot.ps file that contains result of RNAfold program

    @args:

    filepath: (full or relative) path to the dot.ps.

    @return:

    dot_ps_result: list f lists with i, j, freq_i_j

    '''

    dot_ps_result = []

    with open(filepath, 'r') as f:

        is_data = False

        for line in f:

            if not is_data and line.startswith('%start of base pair probability data'):

                is_data = True

                continue

            elif is_data and line.startswith('showpage'):

                break

            elif is_data:

        if line.find('ubox') > 0:

                    # take only first 3 numbers

                    data_line = line.split()[:3]

                    dot_ps_result.append(

                        [int(data_line[0]), int(data_line[1]), float(data_line[2])]

                    )

    return dot_ps_result


慕桂英3389331
浏览 158回答 2
2回答

qq_遁去的一_1

if line.find('ubox') > 0:# take only first 3 numbers    #these two lines below are the problem     data_line = line.split()[:3]    dot_ps_result.append([int(data_line[0]), int(data_line[1]), float(data_line[2])])你还有一个下面没有代码的 else 语句,所以缩进挂了,你想让脚本在那里做什么?你所需要的只是pass这样就好了您在此部分中放置了太多选项卡。

胡说叔叔

解释器期望在 下找到一些东西elif is_data:,但它什么也没找到。因此,要么用您的代码填充它,要么如果您的意思是if line.find('ubox') > 0:在elif is_data:条件执行时执行该行,则修复您的缩进。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python