У меня есть список строк в Python, и я хочу найти, какие из них не содержат плохих подстрок, которые я читаю из файла. Вот мой код в Python 2:
with open("badchars.txt", "w") as f:
f.write("a b c")
mywords = ["good", "bad"]
print [
word for word in mywords
if all(
badchar not in word
for badchar in open("badchars.txt").read().split()
)
]
with open("badchars.txt") as f:
print [
word for word in mywords
if all(
badchar not in word
for badchar in f.read().split()
)
]
Я ожидаю, что обе строки напечатают ["good"], но хотя первая ведет себя так, как ожидалось, вторая выдает ["good", "bad"]. Я не понимаю почему.
То же самое происходит в питоне 3, если я изменю print
на print()
.
Почему это происходит?