我可以将逻辑运算符“或”与字符串结合使用吗?

时间:2014-01-26 16:36:05

标签: python string logical-operators

我正在读取一个txt文件,并计算文件中特定单词的次数。例如,我想知道“ABC”和“DEF”有多少次。我的第一个想法是:

for line in open:
    if "ABC" or "DEF" in line:
        x=x+1

结果是x = 33 ......但这是错误的。 使用:

for line in open:
    if "ABC" in line:
        x=x+1
    if "DEF" in line:
        x=x+1

结果是8!那是正确的。

为什么第一个例子不起作用?

1 个答案:

答案 0 :(得分:2)

"ABC" or "DEF" in line

评估为

("ABC") or ("DEF" in line)

由于"ABC"是真值,因此if条件将满足始终。您可以像这样解决这个问题

if "ABC" in line or "DEF" in line:

将被评估为

("ABC" in line) or ("DEF" in line)

因此,如果该行有ABCDEF,则会满足条件。

如果要检查的有效单词数量很大,则编写冗长的if条件会很不方便。而不是那样,你应该使用any函数来编写这个条件,就像这样

valid_words = ["ABC", "DEF"]
...
if any(word in line for word in valid_words):

<强>建议:

  1. 避免使用open作为变量名称,因为它会影响内置open函数

  2. 处理文件时,请确保close the opened files properly or prefer to use with statement

相关问题