23

unlessPythonのステートメントに相当するものはありますか?ラベルに行がある場合、ラベルに行を追加したくありません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
4

3 に答える 3

23

'not in'はどうですか?:

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')
于 2012-11-12T09:08:00.077 に答える
12

「unless」ステートメントはありませんが、いつでも次のように書くことができます。

if not some_condition:
    # do something

not inArtsiomが述べたように、演算子もあります。したがって、コードについては、次のように記述します。

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)

line...しかし、後で変更した変数を使用して何かを行う予定がない限り、Artsiomのバージョンの方が優れています。

于 2012-11-12T09:09:36.147 に答える
1

(かなり大幅に)編集された質問で発生するエラーは、変数が存在しないことを示しています。つまり、変数lineMatchを設定するために指定した条件が満たされていませんでした。LineMatch = False外側のforループ内の最初の行(最初のifステートメントの前)のような行を追加して、それが存在することを確認すると役立つ場合があります。

于 2012-11-12T09:35:37.750 に答える