我正在读取一个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!那是正确的。
为什么第一个例子不起作用?
答案 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)
因此,如果该行有ABC
或DEF
,则会满足条件。
如果要检查的有效单词数量很大,则编写冗长的if
条件会很不方便。而不是那样,你应该使用any
函数来编写这个条件,就像这样
valid_words = ["ABC", "DEF"]
...
if any(word in line for word in valid_words):
<强>建议:强>
避免使用open
作为变量名称,因为它会影响内置open
函数
处理文件时,请确保close the opened files properly or prefer to use with
statement。