If statement в Python
Есть ли эквивалент инструкции unless
в Python? Я не хочу добавлять строку к метке, если она имеет p4port
в ней:
for line in newLines:
if 'SU' in line or 'AU' in line or 'VU' in line or 'rf' in line and line.find('/*') == -1:
lineMatch = False
for l in oldLines:
if '@' in line and line == l and 'p4port' not in line:
lineMatch = True
line = line.strip('\n')
line = line.split('@')[1]
line = line + '<br>\n'
labels.append(line)
if '@' in line and not lineMatch:
line = line.strip('\n')
line = line.split('@')[1]
line="<font color='black' style='background:rgb(255, 215, 0)'>"+line+"</font><br>\n"
labels.append(line)
Я получаю синтаксическую ошибку:
if '@' in line and not lineMatch:
UnboundLocalError: local variable 'lineMatch' referenced before assignment
Ответы
Ответ 1
Как насчет 'не в'?:
if 'p4port' not in line:
labels.append(line)
Также я предполагаю, что код можно изменить, а затем:
if '@' in line and line == l and 'p4port' not in line:
lineMatch = True
labels.append(line.strip('\n').split('@')[1] + '<br>\n')
Ответ 2
Нет инструкции "except", но вы всегда можете написать:
if not some_condition:
# do something
Там также оператор not in
, о котором говорил Арциум, поэтому для вашего кода вы должны написать:
if '@' in line and line == l:
lineMatch = True
line = line.strip('\n')
line = line.split('@')[1]
line = line + '<br>\n'
if 'p4port' not in line:
labels.append(line)
... но версия Artiom лучше, если вы не планируете что-то делать с измененной переменной line
позже.
Ответ 3
Ошибка, которую вы получаете в своем (довольно резко) отредактированном вопросе, говорит вам, что переменная lineMatch
не существует, что означает, что условия, которые вы указали для ее установки, не были выполнены. Это может помочь добавить строку типа LineMatch = False
в качестве первой строки внутри вашего внешнего цикла for
(перед первым оператором if
), чтобы убедиться, что она существует.