Wypisywanie słów nie zawierających danych liter

0

Witam,
próbuję napisać program, który wypisuje słowa nie zawierające podanych przez użytkownika liter. Słowa znajdują się w pliku .txt. Napisany przeze mnie kod działa jedynie w przypadku podania jednej litery (lub ciągu liter) i tylko gdy słowo rozpoczyna się od niej. Chciałbym, żeby program opuszczał słowa zawierające dane litery bez znaczenia na jakiej pozycji w wyrazie się one znajdują, oraz działał przy podaniu więcej niż jednej litery

def avoids():
    fin = open('words.txt')
    for line in fin:
        word = line.strip()
        if letter not in word:
            print(word)
        else:
            continue

letter = ('a')
avoids()
0

A nie możesz użyć funkcji find() i sprawdzać czy zwróci -1?

0
jurek1980 napisał(a):

A nie możesz użyć funkcji find() i sprawdzać czy zwróci -1?

Próbuję zrobić to w taki sposób jak mówisz, ale coś robię nie tak.

def avoids():
    fin = open('words.txt')
    for line in fin:
        word = line.strip()
        x = fin.find(letter)
        if x == True:
            print(word)
        else:
            continue

letter = ('a')
avoids()

Mógłbyś podpowiedzieć jak to poprawić?

1

https://www.w3schools.com/python/ref_string_find.asp
Funkcja zwraca pozycję szukanej frazy, w Twoim przypadku litery, albo -1 jeśli nie znalazł. Jak masz wypisać te słowa które nie zawierają danej litery w warunku sprawdzaj czy funkcja zwraca -1.

1

Tak swoją drogą, to do takich rzeczy dużo lepszy jest AWK:

awk '{if ($0 !~ /[abc]/) print}' filename.txt

Ta komenda wypisze Ci wszystkie linie z pliku prócz tych, które zawierają litery a, b, c.

1
awk '{if ($0 !~ /[abc]/) print}' filename.txt
awk '!/[abc]/' words.txt
sed '/[abc]/d' words.txt
grep -v '[abc]' words.txt
perl -ne 'print if !/[abc]/' words.txt
ruby -ne 'print if !/[abc]/' words.txt
0
for word in words: 
  _filter = lambda word, f=forbidden: any(map(lambda item: item in word, f)) 
    if not _filter(word, forbidden): 
        print(word)

1 użytkowników online, w tym zalogowanych: 0, gości: 1