String Vergleich -> Problem mit Regular-Expression

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Oswald_Mario
User
Beiträge: 6
Registriert: Dienstag 10. Juli 2007, 14:15

Hallo,

ich lese eine Zeile ein und möchte vergleichen, ob sie mit einem
gewissen Teilstring beginnt:

if (line == 'FormatEdgeSel*\n')

Wie setze ich den "*" - Operator richtig ein, damit er den String als richtig erkennt, wenn dieser bis zu diesem Operator mit dem Vergleichsstring übereinstimmt?
Leider habe ich nicht viel Erfahrung mit regulären Ausdrücken...

LG Mario
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Reicht dir line.startswith("FormatEdgeSel") nicht?

Gruss
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Oswald_Mario hat geschrieben:Wie setze ich den "*" - Operator richtig ein, damit er den String als richtig erkennt, wenn dieser bis zu diesem Operator mit dem Vergleichsstring übereinstimmt?
Leider habe ich nicht viel Erfahrung mit regulären Ausdrücken...
Hallo Mario, nur damit du nicht auf die falsche Bahn gerätst ;):
Das was du da oben zusammengebaut hast war ein einfacher String, in dem auch das "*" Zeichen
ein einfaches Zeichen ist und kein Platzhalter.
Nur um Missverständnissen vorzugbeugen.
Für RegExp nutzt man in Python das Modul re
Oswald_Mario
User
Beiträge: 6
Registriert: Dienstag 10. Juli 2007, 14:15

ok danke, der "startswith"-Befehl hat genau gepasst.

Gibt es dazu eigentlich die entsprechenden ähnliche Befehle wie
z.B. "contains" oder "endswith"?

Hat jemand eine Befehlsübersicht für Python?

LG Mario
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

BlackJack

Und man kann natürlich auch im Interpreter mit `dir()` und `help()` nachschauen was ein Objekt so bietet und auch gleich ein wenig experimentieren.

Code: Alles auswählen

In [4]: a = 'hallo'

In [5]: 'endswith' in dir(a)
Out[5]: True

In [6]: a.endswith('lo')
Out[6]: True

In [7]: 'll' in a
Out[7]: True

In [8]: 'x' in a
Out[8]: False
Oswald_Mario
User
Beiträge: 6
Registriert: Dienstag 10. Juli 2007, 14:15

Ok danke schonmal...

Da ich von C komme, tu ich mich einwenig schwer mit der Syntax.

Wie kann ich den einen logische Abfrage wie "startswith" negiert abfragen, sprich:

!(line.startswith("Hallo")) ???

Funktionieren in Python auch die logischen Verknüpfungsoperatoren wie
"&&" oder "||" ??

Folgende Codezeile funktioniert nicht:

if( (line1[31] == 'X') and (line2[31] == 'X') and !(line3.startswith('123') ):

LG Mario
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Klar, bei python kann mans ja einfach mal in die shell hacken so wie mans sich erhofft ;)

Meist kommt das was man erwartet

Code: Alles auswählen

>>> s = "Hallo"
>>> s.endswith("o")
True
>>> not s.endswith("o")
False
>>> True and True
True
>>> True and False
False
>>> True and not False
True
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Oswald_Mario
User
Beiträge: 6
Registriert: Dienstag 10. Juli 2007, 14:15

Danke!!!
Antworten