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

“不在”呢?

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

没有“除非”声明,但你总是可以写:

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)

...但是Artsiom 的版本更好,除非您打算line稍后对修改后的变量做一些事情。

于 2012-11-12T09:09:36.147 回答
1

您在(相当彻底)编辑的问题中遇到的错误是告诉您该变量lineMatch不存在 - 这意味着您为设置它指定的条件没有得到满足。LineMatch = False在外部for循环中(在第一条语句之前)添加一条类似于第一行的行可能会有所帮助if,以确保它确实存在。

于 2012-11-12T09:35:37.750 回答