Hallo Amigos,
im einfachsten fall habe ich z.B. :
a = "12"
ich hab (import type) angegeben und jetzt will ich überprüfen ob a ein Str ist:
mit dem Befehl type.StringType() sollte es gehen aber ich mach irgendwas falsches...
import types
a = "12"
if a==types.StringType():
print "Hallo Word"
>>> hier wird nichts angezeigt
wenn ich angebe:
if a!=types.StringType():
print "Hallo Word"
>>> Hallo Word (hier wird "Hallo Word" angezeigt egal ob a = "12" oder a = 12)
kann jemand mir einen Tipp geben?
Danke
Datentyp abfragen
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Du willst
Der Code ist gleich .
Code: Alles auswählen
if isinstance(a, str)
Code: Alles auswählen
a == types.StringType()
Code: Alles auswählen
a == ""
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
1. Du solltest nicht nur, du musst sogar deinen Code in [ code = py ]
Tags setzen (ohne Leerzeichen) damit man sieht welche Einrückungen du gemacht hast.
[/code]
*EDIT*
hatte kein Python zum testen .isdigit geht nur bei Strings habe also die Variablen noch in str() gepackt.
Das scheint zwar unpracktich, aber wenn man mit mod_python codet kommen alle Werte als Strings rein und da nutze ich diese Funktion.
Alternativ könnte ich auch einfach Strings zu Int umwandeln um mit try: und Except Fehleabfangen, find da die isdigit Methode aber besser.
Tags setzen (ohne Leerzeichen) damit man sieht welche Einrückungen du gemacht hast.
Code: Alles auswählen
x = 123
y = "123"
z = "Test"
# == True kann man auch weglassen
if str(x).isdigit() == True:
print "X ", x - 12
# gibt "X 111" aus
if str(y).isdigit() == True:
print "Y ", int(y) - 12
# gibt "Y 111" aus aber nur weil wir y in ein Int umgewandelt haben
# den Python erkennt das `y` nur aus Zahlen besteht, auch wenn es
# als String gespeichert ist
if str(z).isdigit() == True:
print "Z ", z
# gibt nichts aus weil `z` keine Int ist und kein String der nur Zahlen enthält
*EDIT*
hatte kein Python zum testen .isdigit geht nur bei Strings habe also die Variablen noch in str() gepackt.
Das scheint zwar unpracktich, aber wenn man mit mod_python codet kommen alle Werte als Strings rein und da nutze ich diese Funktion.
Alternativ könnte ich auch einfach Strings zu Int umwandeln um mit try: und Except Fehleabfangen, find da die isdigit Methode aber besser.
Zuletzt geändert von Sr4l am Freitag 11. Mai 2007, 14:29, insgesamt 2-mal geändert.
Sr4!, da ich in deinem Code nicht verstanden habe was isdigit() genau macht (da es ja scheinbar immer True zurückliefert) hab ich deinen Code mal in Python kopiert und bekomme immer folgende Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "test2.py", line 6, in <module>
if x.isdigit() == True:
AttributeError: 'int' object has no attribute 'isdigit'
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
"Kann man weglassen" ist falsch formuliert. "Wers nicht weglässt, wird gevierteilt" wäre besser.Sr4l hat geschrieben:Code: Alles auswählen
# == True kann man auch weglassen if x.isdigit() == True:
Das liegt daran das isdigit eine String-Operation ist und nicht für int.Zizibee hat geschrieben:Sr4!, da ich in deinem Code nicht verstanden habe was isdigit() genau macht (da es ja scheinbar immer True zurückliefert) hab ich deinen Code mal in Python kopiert und bekomme immer folgende Fehlermeldung:Code: Alles auswählen
Traceback (most recent call last): File "test2.py", line 6, in <module> if x.isdigit() == True: AttributeError: 'int' object has no attribute 'isdigit'
Code: Alles auswählen
>>> x = "123"
>>> x.isdigit()
True
>>> x = "123.22"
>>> x.isdigit()
False
>>>
Einen wirklichen Sinn oder gar eine Lernhilfe erkenne ich aus dem Codesnippet da oben nicht...
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Der Sinn ist das ich gezeigt habe wie man überprüft ob die Variable einen Integer Inhalt hat. 123.22 ist kein Integer mehr.Zap hat geschrieben: isdigit guckt ob in dem String nur die Zahlen von 0-9 vorhanden sind.
Einen wirklichen Sinn oder gar eine Lernhilfe erkenne ich aus dem Codesnippet da oben nicht...
Ach ich habe die Frage entwas überlesen es ging darum zu prüfen ob a ein String ist