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 № 1Umieść 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