Seite 1 von 1

rex Ex fehler

Verfasst: Sonntag 25. Mai 2014, 15:54
von audacity363
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'

Re: rex Ex fehler

Verfasst: Sonntag 25. Mai 2014, 16:06
von EyDu
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.

Re: rex Ex fehler

Verfasst: Sonntag 25. Mai 2014, 16:08
von /me
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?

Re: rex Ex fehler

Verfasst: Sonntag 25. Mai 2014, 16:21
von 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.