Hi.
Ich bin noch ein ziemlicher Python Anfänger und hatte letztens ein Problem etwas in eine Datei zu schreiben. Es gab mir eine Fehlermeldung dass ich kein int in Dateien schreiben kann. Jetzt frage ich mich: geht das irgendwie, oder kann ich vielleicht einfach das Int in einen String umwandeln?
Ich hab ehrlich gesagt keine Ahnung was ich machen soll.
Ich hoffe ihr könnt mir helfen.
Gruß sprudel
int in einen String umwandeln?
Hi sprudel
Mit der "str" Methode wandelst Du Integer-Werte ganz leich in String-Objekte um.
Gruß,
>>Masaru<<
Code: Alles auswählen
int_wert=4
string_wert = str(int_wert)
Gruß,
>>Masaru<<
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Noch was:
Letzteres ist zu bevorzugen
Code: Alles auswählen
>>> print "jup" + 10 + "jep"
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects
>>> print "jup" + str(10) + "jep"
jup10jep
>>> print "jup%sjep" % 10
jup10jep
oder so:
Code: Alles auswählen
>>> from string import Template
>>> t=Template("Eine Zahl: $zahl. l${leet}t.")
>>> map={"zahl":4711, "leet":33}
>>> t.substitute(map)
'Eine Zahl: 4711. l33t.'
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wobei ich nicht genau weiß, was dieses Template so alles kann... Denn dein Beispiel geht auch einfacher so:
Code: Alles auswählen
t= "Eine Zahl: %(zahl)s. l%(leet)st."
print t % {"zahl":4711, "leet":33}
es geht auch:
ist geschmackssache. ich benutze lieber template, das sieht überichtlicher aus. der hauptunterschied ist, dass man eine methode (substitute) statt einem operator (%) verwendet.
es gibt wohl noch ein paar spezialfeatures von template, die ich aber noch nie benutzt habe, auch nicht wirklich durchgelesen:
http://www.python.org/doc/2.4.2/lib/node109.html
Code: Alles auswählen
map = {"zahl":4711, "leet":33}
t= "Eine Zahl: %(zahl)s. l%(leet)st."
print t % map
T = t % map
es gibt wohl noch ein paar spezialfeatures von template, die ich aber noch nie benutzt habe, auch nicht wirklich durchgelesen:
http://www.python.org/doc/2.4.2/lib/node109.html
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich glaube der einzige Vorteil ist, das man bessere Fehlermeldungen bekommt und das es safe_substitute gibt. Ich frage mich nur, warum man unbedingt eine neue Syntax eingeführt hat (also warum statt %(leet)s -> ${leet})
Ja, bessere fehlermeldungen sind auch noch von vorteil, kann mich aber nicht erinnern, dass ich beim substituieren mal problematische fehler hatte ...
neue syntax wohl daher:
neue syntax wohl daher:
Code: Alles auswählen
template.substitute({"test":1}) % {"test":2}
Die neue Syntax wird vielen Umsteigern von anderen Sprachen bekannter vorkommen und ist weniger fehleranfällig, weil viele Leute gerne mal das Format bei '%(name)s' vergessen. Ist mir auch schon passiert.
Insbesondere wenn man Templates in Dateien verwendet, die von Benutzern bearbeitet werden, ist '$name' bzw. '${name}' leichter für Leute die kein Python können und sich immer fragen was der Quatsch mit dem 's' nach der Klammer soll.
Insbesondere wenn man Templates in Dateien verwendet, die von Benutzern bearbeitet werden, ist '$name' bzw. '${name}' leichter für Leute die kein Python können und sich immer fragen was der Quatsch mit dem 's' nach der Klammer soll.