Seite 1 von 1

Richtiger Ansatz bei Textüberprüfung

Verfasst: Freitag 15. April 2005, 15:50
von mitsuhiko
Ich habe jetzt mal folgendes gemacht:

Code: Alles auswählen

class finder:
    def __init__(self, text, offset, word):
        chars = [
            'A','B','C','D','E','F','G','H','I','J',
            'K','L','M','N','O','P','Q','R','S','T',
            'U','V','W','X','Y','Z','Ä','Ö','Ü','1',
            '2','3','4','5','6','7','8','9','0'
        ]
        self.text = ''
        text = text.upper()
        for char in text:
            for c in chars:
                if c == char: 
                    self.text += char
                    break
        self.offset = offset
        self.word = word
Aber das ist ein sehr langsamer weg.
Wie kann ich die For Schleifen durch etwas Schnelleres ersetzen?

Verfasst: Freitag 15. April 2005, 16:11
von mawe
Hi!

Ich weiß nicht obs wirklich schneller ist, aber kürzer:

Code: Alles auswählen

...
for char in text:
    if char in chars:
        self.text += char
...
Gruß, maw

Verfasst: Freitag 15. April 2005, 17:51
von raist1314
Ich mein, dein Problem ist ein Fall für eine Baumstruktur. Nachzulesen unter: http://www.ibiblio.org/obp/thinkCSpy/chap20.htm

Sebastian

Verfasst: Freitag 15. April 2005, 20:59
von mitsuhiko
Danke für die Antworten.
Ich werde es mir ansehen, wenn ich wieder am Desktop Rechner sitze

Re: Richtiger Ansatz bei Textüberprüfung

Verfasst: Sonntag 17. April 2005, 00:37
von BlackJack
blackbird hat geschrieben:Wie kann ich die For Schleifen durch etwas Schnelleres ersetzen?
Das lässt sich mit der `translate()` Methode auf Zeichenketten sicher schneller bewerkstelligen. Die Argumente für die Methode müsste man am Anfang einmal vorbereiten -- für den ersten Parameter einfach eine Zeichenkette die alle Bytewerte von 0 bis 255 enthält und für den zweiten Parameter eine Zeichenkette die alle Zeichen enthält, die Du nicht haben möchtest.