if "calendar" or "Calendar" in rows:
这总是正确的。"calendar"
作为一个非零长度的字符串,它是真的,并且or
'd with"Calendar" in rows
总是真的。事实上,"Calendar" in rows
甚至从未评估过,因为"calendar"
它是真的。
你要:
if "calendar" in rows or "Calendar" in rows:
这不是最有效的,因为它实际上会搜索rows
两次。要只搜索一次,请尝试:
if (row.lower() = "calendar" for row in rows):
但是,这实际上可能并不比搜索行两次快:首先是因为它是一个显式循环,其次是因为它在测试之前将每一行都小写了。它确实具有匹配任何大小写的优势,不仅是“日历”或“日历”,还包括“日历”或“日历”或其他任何内容。
现在,我觉得这可能仍然不是你想要的。除非其中一行恰好是字符串"calendar"
(在任何情况下),否则这总是错误的。例如,如果您从文件中读取了列表,它可能包含行尾,这将使该测试无法匹配。或者字符串中可能有其他文本,而您只想测试每一行是否包含该单词。在这种情况下,写:
if any("calendar" in row.lower() for row in rows):