Is there an equivalent to the unless statement in Python? I do not want to append a line to a label if it has p4port in it:
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)
I get a Syntax error:
if '@' in line and not lineMatch:
UnboundLocalError: local variable 'lineMatch' referenced before assignment
3 Answers
What about 'not in'?:
if 'p4port' not in line:
labels.append(line)
Also i guess that you code can be modified then to:
if '@' in line and line == l and 'p4port' not in line:
lineMatch = True
labels.append(line.strip('\n').split('@')[1] + '<br>\n')
There's no "unless" statement, but you can always write:
if not some_condition:
# do something
There's also the not in operator as Artsiom mentioned - so for your code, you'd write:
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)
... but Artsiom's version is better, unless you plan to do something with your modified line variable later.
The error you're getting in your (rather drastically) edited question is telling you that the variable lineMatch doesn't exist - which means the conditions you specified for setting it weren't met. It might help to add a line like LineMatch = False as the first line inside your outer for loop (before the first if statement), to ensure that it does exist.