Путаница с отступами в Python кода шаблона - PullRequest
0 голосов
/ 02 марта 2019

Я получаю эту ошибку unindent does not match any outer indentation level в строке

if line.find('ubox')>0

Я не очень разбираюсь в python, но нажатие клавиши Shift Tab в моей IDE не решает проблему.Это код шаблона из одного из моих назначений, поэтому, когда я вставляю копию, он, должно быть, испортил отступ.В приведенном текстовом файле, если выстраиваются в очередь, а просто смотрят на код, я бы подумал, что он был вложенным, если бы в elif.

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

Ответы [ 2 ]

0 голосов
/ 02 марта 2019
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, и все будет в порядке

Вы поместили слишком много вкладок в этом разделе.

Надеюсь, это поможет

0 голосов
/ 02 марта 2019

Интерпретатор ожидает, что что-то будет найдено в elif is_data:, но вместо этого он ничего не нашел.Поэтому либо заполните его своим кодом, либо, если вы намеревались выполнить строку if line.find('ubox') > 0:, если выполняется условие elif is_data:, исправьте отступ.

...