Autocomplete Funktion im Qscintilla Widget

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
morten
User
Beiträge: 4
Registriert: Sonntag 15. Februar 2015, 14:18

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)
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@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)]
morten
User
Beiträge: 4
Registriert: Sonntag 15. Februar 2015, 14:18

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 .....
Antworten