Seite 1 von 1

Autocomplete Funktion im Qscintilla Widget

Verfasst: Sonntag 24. Juli 2016, 13:29
von morten
Hallo,

entwickle gerade einen Texteditor und benutze PyQt5 und das Qscintilla Widget.
Nach jedem drücken der ENTER Taste durchsucht er den eingegebenen Text und tut jedes Wort (if len(wort > 3) in eine Liste.

Code: Alles auswählen

for wort in wortListe:
    if len(wort) < 3:
        wortListe.remove(wort)
    elif ':' in wort:
        wortListe.remove(wort)
Meine Frage wäre nun: Gibt es mit regulären Ausdrücken eine elegante Methode alle Sonderzeichen wie !"§$%&/()={[]} auszusortieren ? Hat jemand eine Idee wie man das lösen kann. Codebeispiel wäre gut

Code: Alles auswählen

for wort in wortListe:
    if re.match("????????", wort):
        wortListe.remove(wort)

Re: Autocomplete Funktion im Qscintilla Widget

Verfasst: Sonntag 24. Juli 2016, 16:22
von Sirius3
@morten: Dein Code macht das Gegenteil von dem, was Du im Text schreibst und ist dazu noch fehlerhaft. Listen, über die man gerade iteriert, darf man nicht ändern, weil dann unvorhergesehene Sachen passieren.
Also besser:

Code: Alles auswählen

woerter = [wort for wort in woerter if len(wort) >= 3 and ':' not in wort]
oder falls Du unbedingt reguläre Ausdrücke verwenden willst:

Code: Alles auswählen

woerter = [wort for wort in woerter if re.match('^[^:!"§$%&/()={[\]}]{3,}$', wort)]

Re: Autocomplete Funktion im Qscintilla Widget

Verfasst: Dienstag 26. Juli 2016, 00:38
von morten
Ok, ... ergibt Sinn ....
habe das auf die Schnelle geschrieben ... normalerweise erstelle ich eine neue Liste und .append dann das gefundene Wort .... Danke für deine Antwort ... :) Werde ich ausprobieren .....