Für variablen typ testen

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
Kamik423
User
Beiträge: 93
Registriert: Donnerstag 28. März 2013, 16:53

Code: Alles auswählen

>>> 4.type
"int"
>>> "text".type
"String"
>>> (1, "text").type
"list"
Gibts das- oder etwas vergleichliches?
0x4c65742773206d616b652073757265207468617420686973746f7279206e6576657220666f726765747320746865206e616d6520656e746572707269736521
BlackJack

@Kamik423: Ja, aber das will man in der Regel nicht machen. Warum denkst Du das zu brauchen?

(Bei 5. würde man wohl eher `tuple` erwarten statt `list`.)
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Kamik423 hat geschrieben:Gibts das- oder etwas vergleichliches?
Hast du mal in der Python-Dokumentation nach type gesucht?
Namitz243
User
Beiträge: 4
Registriert: Freitag 16. Mai 2014, 12:08

hi kamik,
ich versteh deine Frage nicht ganz aber die einstgsten richtigen Datentypen in Python sind
str (alle texte)
int (ganze zahlen)
float (kommazahlen)
listen und ähnliches sind keine richtigen Datentypen
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Namitz243 hat geschrieben:listen und ähnliches sind keine richtigen Datentypen
Wuss? Wie kommst du denn darauf? Was sind Deiner Meinung nach "richtige" Datentypen?
Namitz243 hat geschrieben:str (alle texte)
Da gibst mindestens noch Unicodestrings bzw. für Python3 Bytesstrings.
Namitz243 hat geschrieben:int (ganze zahlen)
Was ist mit long?
Namitz243 hat geschrieben:float (kommazahlen)
Jepp und Decimal sind auch "Kommazahlen".
BlackJack

@Namitz243: Die Aussage ist Unsinn. Du deckst nicht einmal die „eingebauten” Datentypen ab, wo zum Beispiel auch `bool`, `NoneType`, und `complex` zu gehören, sondern natürlich ist `list` auch ein richtiger Datentyp. Sowie alles was mittels `class` definiert wurde.
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Namitz243 hat geschrieben:hi kamik,
ich versteh deine Frage nicht ganz aber die einstgsten richtigen Datentypen in Python sind
str (alle texte)
int (ganze zahlen)
float (kommazahlen)
listen und ähnliches sind keine richtigen Datentypen
Ist das der Versuch, das Konzept der primitiven Datentypen in Java (die übrigens auch nicht "richtiger" sind als alle anderen Java-Typen) auf Python zu übertragen, oder wie kommst du zu dieser Aussage?
Kamik423
User
Beiträge: 93
Registriert: Donnerstag 28. März 2013, 16:53

Ja, das mit list/tuple war ein schreibfehler.
Gibt es etwas das nach variablentyp testen kann?
Ich möchte einfach nur einen String output oder etwas vergleichliches habem, das mir den datentyp angibt.
Was ist dieses .type? Ich habe es nur als "platzhalter" verwendet, und werde aus der dokumentation nicht ganz schlau :oops:
Die angegebenen waren auch nur beispiele. Es wäre großartig, wenn das für alle datentypen funktionieren würde
0x4c65742773206d616b652073757265207468617420686973746f7279206e6576657220666f726765747320746865206e616d6520656e746572707269736521
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Kamik423 hat geschrieben:Was ist dieses .type? Ich habe es nur als "platzhalter" verwendet, und werde aus der dokumentation nicht ganz schlau :oops:
So schwierig ist die Dokumentation ja nun eigentlich nicht.

Code: Alles auswählen

>>> print(type(4))
<class 'int'>
>>> print(type('text'))
<class 'str'>
>>> print(type([]))
<class 'list'>
>>> print(type(type('x')))
<class 'type'>

Code: Alles auswählen

>>> if type('foo') == str:
        print('String')

String
Kamik423
User
Beiträge: 93
Registriert: Donnerstag 28. März 2013, 16:53

Und was kann ich mit diesem "type-type" anfangen? Kann ich das in einen string umwandeln (irgendwie)
Und vielen dank nochmal!
0x4c65742773206d616b652073757265207468617420686973746f7279206e6576657220666f726765747320746865206e616d6520656e746572707269736521
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich versuch es nochmal: Was willst du eigentlich machen?

Wenn man Code schreibt, der sich an einem konkreten Typ orientiert macht man im allgemeinen etwas falsch oder kaempft gegen die Sprache selbst.
Will man das Programmverhalten abhaengig von Typen machen, ist man mit `isinstance` besser beraten (oder noch besser: man benutzt Objektorientierung oder Ducktyping/Protokolle). Aber auch hier braucht man keinen String.

Und dann kann man mit `str` alles in einen String umwandeln .. ob das Sinn macht ist ein anderes Thema.
Kamik423
User
Beiträge: 93
Registriert: Donnerstag 28. März 2013, 16:53

Es geht hierbei um daten die ich aus einer .txt datei importiere. Ich muss die verarbeiten können.
0x4c65742773206d616b652073757265207468617420686973746f7279206e6576657220666f726765747320746865206e616d6520656e746572707269736521
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das ist doch kein Grund für einen Test auf Typen.
Das Leben ist wie ein Tennisball.
BlackJack

@Kamik423: Aus einer Textdatei bekommt man nur `str` oder `unicode` (Python 2) beziehungsweise `bytes` oder `str` (Python 3). Diesen Text kann man dann irgendwie geeignet in Werte mit anderen Datentypen parsen. Aber da muss man *vorher* ja schon wissen in *was* für einen Typ man die entsprechenden Teile des Textes parsen will, und nicht hinter den Wert testen.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

EyDu hat geschrieben:Das ist doch kein Grund für einen Test auf Typen.
Aber so kann man den Datentyp abspeichern ;)

@Kamik423: Ganz ehrlich: Du willst JSON oder pickle benutzen.
Kamik423
User
Beiträge: 93
Registriert: Donnerstag 28. März 2013, 16:53

Ja aber wenn ich den string "74656" kriege möchte ich das in einen int parsen, und muss dafür wissen, dass es ein int ist.
Der string "[1701,74205]" sollte eine liste sein [1701,74206]

Und dazu muss ich den datentyp zusätzlich abspeichern, den ich aber irgendwie ausfinden will.
Was sind json und pickle, ich kenne nur das normale open() und readlines()
0x4c65742773206d616b652073757265207468617420686973746f7279206e6576657220666f726765747320746865206e616d6520656e746572707269736521
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Kamik423 hat geschrieben:Ja aber wenn ich den string "74656" kriege möchte ich das in einen int parsen, und muss dafür wissen, dass es ein int ist.
Nicht, wenn du ein vernünftiges Format wählst. Dann musst du gar nichts selber machen.
Kamik423 hat geschrieben:Was sind json und pickle, ich kenne nur das normale open() und readlines()
Es gibt Suchmaschinen und Dokumentation zu den Modulen.
Das Leben ist wie ein Tennisball.
bfm
User
Beiträge: 88
Registriert: Donnerstag 14. März 2013, 09:42

Hi,

schau mal hier in der Doku zu Python 3.3:
https://docs.python.org/3.3/library/std ... ng-methods

Mit str.isdigit() kannst zB testen, ob in dem String nur Zahlen enthalten sind und wenn nicht entsprechend reagieren.
Antworten