if "calendar" or "Calendar" in rows:
Это всегда так. "calendar"
является строкой, отличной от нулевой длины, это правда, и что or
'd с "Calendar" in rows
всегда верно. Фактически, "Calendar" in rows
никогда не оценивается, потому что верно "calendar"
.
Вы хотите:
if "calendar" in rows or "Calendar" in rows:
Это не является наиболее эффективным, так как оно будет на самом деле искать rows
дважды. Для того, чтобы искать его только один раз, попробуйте:
if (row.lower() = "calendar" for row in rows):
Однако, это не может быть на самом деле быстрее, чем поиск строк дважды: первый, потому что это явный цикл, второй, потому что это lowercasing каждую строку перед тестированием. Он имеет то преимущество, что подходит любой случай, а не только «календарь» или «Календарь», но также «КАЛЕНДАРЬ» или «CALenDAR» или что-то еще.
Теперь у меня возникает ощущение, что это все еще может быть не тем, что вы хотите. Если ни одна из строк не точно строка "calendar"
(в любом случае), это всегда будет ложным. Например, если вы прочитали список из файла, он может содержать концы строк, которые не позволяют совместить этот тест. Или может быть другой текст в строке, и вы просто хотите проверить, содержит ли каждая строка это слово.В этом случае напишите:
if any("calendar" in row.lower() for row in rows):
Какой именно «это если» ??? Есть три if-утверждения? Сократите свой код до разумного теста. –