rex Ex fehler

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
audacity363
User
Beiträge: 83
Registriert: Dienstag 6. August 2013, 18:59

Mahlzeit,
Ich müsste einen String nur darauf überprüfen ob er nur Zahlen enthält oder nicht. An sich ganz einfach:

Code: Alles auswählen

import re
tmp = "643"
re.compile("\d", tmp)
oder

Code: Alles auswählen

import re
tmp = "643"
re.compile("[0-9]", tmp)
Beide male bekomme ich aber folgende Fehlermeldung:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\re.py", line 190, in compile
return _compile(pattern, flags)
File "C:\Python27\lib\re.py", line 240, in _compile
p = sre_compile.compile(pattern, flags)
File "C:\Python27\lib\sre_compile.py", line 498, in compile
p = sre_parse.parse(p, flags)
File "C:\Python27\lib\sre_parse.py", line 685, in parse
p = _parse_sub(source, pattern, 0)
File "C:\Python27\lib\sre_parse.py", line 308, in _parse_su
itemsappend(_parse(source, state))
File "C:\Python27\lib\sre_parse.py", line 401, in _parse
if state.flags & SRE_FLAG_VERBOSE:
TypeError: unsupported operand type(s) for &: 'str' and 'int'
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

audacity363 hat geschrieben:Ich müsste einen String nur darauf überprüfen ob er nur Zahlen enthält oder nicht. An sich ganz einfach
Das geht mit der isdigit-Methode auf Strings viel einfacher.

Ansonsten zu deinem Fehler: Schau dir dir Dokumentation zur compile-Methode des re-Moduls an. Dort steht genau, was für Parameter erwartet werden. Kleiner Hinweis: Die complie-Funktion ist *nicht* zum testen von Strings gedacht, dafür sind ande Funktionen verantwortlich.
Das Leben ist wie ein Tennisball.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Was soll der String tmp bei dir darstellen? compile erwartet als zweiten Parameter - wenn man ihn den angibt - einen Integer-Wert für flags. Kann es sein, dass du eigentlich re.search verwenden wolltest?
BlackJack

@/me: Oder `re.match()`. In beiden fällen müsste man den regulären Ausdruck aber noch anpassen, damit wirklich die gesamte Zeichenkette getestet wird.
Antworten