int in einen String umwandeln?

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
sprudel
User
Beiträge: 248
Registriert: Donnerstag 8. März 2007, 17:12

Donnerstag 8. März 2007, 17:14

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
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Donnerstag 8. März 2007, 17:18

Richtig, wandel es zu einem string
str(10) #-> '10'
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Donnerstag 8. März 2007, 17:19

Hi sprudel

Code: Alles auswählen

int_wert=4
string_wert = str(int_wert)
Mit der "str" Methode wandelst Du Integer-Werte ganz leich in String-Objekte um.

Gruß,
>>Masaru<<
sprudel
User
Beiträge: 248
Registriert: Donnerstag 8. März 2007, 17:12

Donnerstag 8. März 2007, 17:19

Oh vielen Dank. Das stand blöderweise nirgendwo in meinem Tutorial drin. Und dabei ist es eigentlich so einfach ;-) Danke
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 8. März 2007, 17:30

Noch was:

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
Letzteres ist zu bevorzugen ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Freitag 9. März 2007, 10:33

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.'
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 9. März 2007, 10:43

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}

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Freitag 9. März 2007, 10:59

es geht auch:

Code: Alles auswählen

map = {"zahl":4711, "leet":33}
t= "Eine Zahl: %(zahl)s. l%(leet)st."
print t % map
T = t % map
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
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 9. März 2007, 11:02

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})

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Freitag 9. März 2007, 11:09

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:

Code: Alles auswählen

template.substitute({"test":1}) % {"test":2}
BlackJack

Freitag 9. März 2007, 11:28

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.
Antworten