/ / Jak znaleźć słowa, które nie mają znaków ciągu? - string, python-2.7, tablice znaków

Jak znaleźć słowa, które nie mają znaków ciągów? - string, python-2.7, tablice znaków

moje pytanie dotyczy Pythona. Mam .plik txt, który zawiera trochę tekstu. Chcę mieć kod zachęcający użytkownika do wprowadzenia ciągu niedozwolonych liter, a następnie wydrukowania liczby słów w pliku, który nie zawiera żadnego z nich. Napisałem ten:

letters=raw_input("Please enter forbidden letters")
text=open("p.txt", "r").read().split()
for word in text:
for i in letters:
if not j in word:
print word

a także mieć ten:

letters=raw_input("Please enter forbidden letters")
text=open("p.txt", "r").read().split()
for word in text:
for i in letters:
for j in i:
if not j in word:
print word

Ale oba kody dają mi słowa, które nie zawierają każdego ze znaków, a nie wszystkich znaków. Na przykład, jeśli mój plik ma „Witajcie, dobrzy przyjaciele”, a użytkownik wprowadził „oh”, kody te są drukowane:

Witaj dobry przyjaciele przyjaciele

Ale oczekuję tylko „przyjaciół”, którzy nie mają ani „o”, ani „h”. Spodziewam się, że będę miał „przyjaciół” jeden raz, a nie dwa razy. Jak mogę naprawić swój problem?

Odpowiedzi:

1 dla odpowiedzi № 1

Umieść je w zestawie, aby usunąć duplikaty. Następnie dla każdego słowa, które chcesz wydrukować, tylko jeśli wszystko litery nie pojawiają się w słowie. Coś takiego:

letters = raw_input("Please enter forbidden letters")
words = set(open("p.txt", "r").read().split())
for word in words:
if all(letter not in word for letter in letters):
print word