Seite 1 von 1

Ein Wort auf bestimmte Buchstaben untersuchen

Verfasst: Sonntag 20. Juni 2010, 09:48
von hardez
Hallo Leute,
ich habe folgendes Problem, ich habe eine Liste von Worten und einen Satz von Buchstaben. Nun möchte ich alle Worte aus meiner Liste haben, die in unbestimmter Reihenfolge die Buchstaben enthalten.
Beispiel:

liste ['Hallo','das','ist','ein','Test']
Buchstabe(n) s

dabei sollten alle Worte gefunden werden die ein s enthalten.

liste ['Hallo','das','ist','ein','Test']
Buchstabe(n) s a

Hier sollte nur 'das' gefunden werden.

Ich bin mir ziemlich sicher, dass man das mit regulären Ausdrücken machen kann.
Davon hab ich aber leider wenig bis keine Ahnung.
Ihr braucht mir nicht unbedingt die Lösung aufschreiben (wäre aber nett ;) ) eine Tipp was ich mir besonders angucken sollte würde reichen!

Danke und Gruß
hardez

Re: Ein Wort auf bestimmte Buchstaben untersuchen

Verfasst: Sonntag 20. Juni 2010, 09:55
von ms4py
Ups, falsch die Beschreibung gelesen^^
Aber unten steht ja schon die Lösung ;-)

Re: Ein Wort auf bestimmte Buchstaben untersuchen

Verfasst: Sonntag 20. Juni 2010, 09:55
von cofi

Code: Alles auswählen

>>> a = ['Hallo','das','ist','ein','Test']
>>> [elem for elem in a if "s" in elem]
['das', 'ist', 'Test']
>>> [elem for elem in a if all(("s" in elem, "a" in elem))]
['das']

Re: Ein Wort auf bestimmte Buchstaben untersuchen

Verfasst: Sonntag 20. Juni 2010, 10:04
von DaMutz

Code: Alles auswählen

worte = ['Hallo','das','ist','ein','Test']
buchstabe = 's'
print [i for i in worte if buchstabe in i]

buchstaben = 'sa'
elemente = set(worte)
for buchstabe in buchstaben:
     elemente &= set([i for i in elemente if buchstabe in i])
print elemente
wie du siehst ist ein regulärer Ausdruck nicht nötig.

Re: Ein Wort auf bestimmte Buchstaben untersuchen

Verfasst: Sonntag 20. Juni 2010, 10:08
von BlackJack

Code: Alles auswählen

In [1483]: xs = ['Hallo', 'das', 'ist', 'ein', 'Test']

In [1484]: a = set('sa')

In [1485]: [x for x in xs if a < set(x)]
Out[1485]: ['das']
Wenn man mag kann man da noch einmal ein `set()` drauf loslassen um Doubletten auszuschliessen.

Re: Ein Wort auf bestimmte Buchstaben untersuchen

Verfasst: Sonntag 20. Juni 2010, 10:19
von hardez
sehr schnelle Antworten, danke schön, der Befehl is ja mal sehr kryptisch.
Aber vielen dank, is genau das was ich gesucht hab!

Re: Ein Wort auf bestimmte Buchstaben untersuchen

Verfasst: Sonntag 20. Juni 2010, 10:41
von BlackJack
Kryptisch ist vielleicht das von `set` übeladene ``<``, aber das kann man auch als Methodennamen ausschreiben wenn man möchte:

Code: Alles auswählen

In [1488]: [x for x in xs if a.issubset(x)]
Out[1488]: ['das']
Ansonsten sind "list comprehensions" oder Generatorausdrücke Standardhandwerkzeuge in Python, die man zumindest erkennen und lesen können sollte.

Re: Ein Wort auf bestimmte Buchstaben untersuchen

Verfasst: Sonntag 20. Juni 2010, 11:00
von DaMutz

Code: Alles auswählen

xs = ['Hallo', 'das', 'ist', 'ein', 'Test', 'as']
a = set('sa')
print [x for x in xs if a <= set(x)]
so wäre es ganz korrekt...