2012-11-12 8 views
10

Esiste un equivalente all'istruzione unless in Python? Non voglio per aggiungere una linea ad un'etichetta se ha p4port in esso:tranne istruzioni in Python

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) 

ottengo un errore di sintassi:

if '@' in line and not lineMatch: 
    UnboundLocalError: local variable 'lineMatch' referenced before assignment 

risposta

17

Che dire 'non in' ?:

if 'p4port' not in line: 
    labels.append(line) 

Inoltre immagino che il codice può essere modificato poi a:

if '@' in line and line == l and 'p4port' not in line: 
    lineMatch = True 
    labels.append(line.strip('\n').split('@')[1] + '<br>\n') 
5

Non c'è "a meno che" l'istruzione, ma si può sempre scrivere:

if not some_condition: 
    # do something 

C'è anche l'operatore not in come detto Artsiom - così per il codice, devi scrivere:

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) 

.. ma la versione di Artsiom è migliore, a meno che tu non abbia in programma di fare qualcosa con la tua variabile modificata line in seguito.

+0

come modificare la mia istruzione if corrente per fare "if not in p4port" senza perdere la logica corrente – user1795998

1

L'errore che si ottiene nella domanda modificata (piuttosto drasticamente) indica che la variabile lineMatch non esiste, il che significa che le condizioni specificate per l'impostazione non sono state soddisfatte. Potrebbe essere utile aggiungere una riga come LineMatch = False come prima riga all'interno del ciclo esterno for (prima della prima istruzione if), per accertarsi che esista.

Problemi correlati