带 pass 语句的条件

Condition with pass statement

我正在尝试弄清楚如何检查行是否包含某些子字符串,如果包含,则打印该字符串。如果没有,什么也不做。对于这个什么都不做的事情,我发现在Python里面有一个语句只是持有space什么都不做,就是pass所以我就用了。但结果是无论条件如何都将打印所有字符串。

try:
  string = line.split(',')
  if string[0] != 'Aa' or string[0] != 'Bb':
    pass
  print string

print string 行独立于 if 语句。也就是说,无论你的条件是否成立,它都会被执行。

你需要一个 else: 块来做你想做的事:

string = line.split(',')
if string[0] != 'Aa' and string[0] != 'Bb': # You need 'and' up here
  pass
else:
  print string # This will only be executed if the condition is false

但这有点多余。更好的方法是只做:

string = line.split(',')
if string[0] == 'Aa' or string[0] == 'Bb':
  print string

或者也许:

string = line.split(',')
if string[0] in {'Aa', 'Bb'}:
  print string

try/except 用于错误处理。我认为您不需要它来达到这个目的。

string=line.split(',') 是正确的。它会根据逗号将字符串拆分为字符串列表。

问题是print string。它不在 if 语句的范围内,因此 if 语句对打印字符串没有影响。你会想要这样的东西:

if string[0] != 'Aa' or string[0] != 'Bb':
    pass
else:
    print string

或更好:

if string[0] == 'Aa' or string[0] == 'Bb':
    print string

就是这个:

string = line.split(',')
if string[0] == 'Aa' or string[0] == 'Bb':
    print string

你不需要pass