Seite 1 von 1
Datentyp abfragen
Verfasst: Freitag 11. Mai 2007, 08:02
von koukoun
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
Verfasst: Freitag 11. Mai 2007, 08:34
von birkenfeld
Du willst
Der Code
ist gleich
.
Verfasst: Freitag 11. Mai 2007, 08:36
von Sr4l
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: 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
[/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.
Verfasst: Freitag 11. Mai 2007, 09:10
von Zizibee
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'
Verfasst: Freitag 11. Mai 2007, 10:35
von birkenfeld
Sr4l hat geschrieben:
Code: Alles auswählen
# == True kann man auch weglassen
if x.isdigit() == True:
"Kann man weglassen" ist falsch formuliert. "Wers nicht weglässt, wird gevierteilt" wäre besser.
Verfasst: Freitag 11. Mai 2007, 13:49
von Zap
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'
Das liegt daran das isdigit eine String-Operation ist und nicht für int.
Code: Alles auswählen
>>> x = "123"
>>> x.isdigit()
True
>>> x = "123.22"
>>> x.isdigit()
False
>>>
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...
Verfasst: Freitag 11. Mai 2007, 14:05
von Zizibee
Zap hat geschrieben:
isdigit guckt ob in dem String nur die Zahlen von 0-9 vorhanden sind.
Ach so ist das, das klärt natürlich einiges

Danke!
Verfasst: Freitag 11. Mai 2007, 14:36
von Sr4l
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...
Der Sinn ist das ich gezeigt habe wie man überprüft ob die Variable einen Integer Inhalt hat. 123.22 ist kein Integer mehr.
Ach ich habe die Frage entwas überlesen es ging darum zu prüfen ob a ein String ist
