Strings und \n

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
KoenigGunther
User
Beiträge: 22
Registriert: Donnerstag 19. April 2007, 10:05

Freitag 27. Juli 2007, 11:01

Hi!
Ich bekomme es gerade nicht auf die Reihe einen String einzugeben und genau so wieder auszugeben...

Code: Alles auswählen

>>> s = '''
... lol
... rofl
... "\n"
... lmao
... '''
>>> print(s)

lol
rofl
"
"
lmao

>>> print repr(s)
'\nlol\nrofl\n"\n"\nlmao\n'
>>> print str(s)

lol
rofl
"
"
lmao

>>> 
Ich möchte dass mir der String wieder so mit den eingegebenen Absätzen ausgegeben wird, aber das "\n" als String interpretiert wird. Dabei möchte ich das aber nicht in \\n umschreiben müssen - das \n soll einfach so als String, nicht als Befehl interpretiert werden - gibts da ne Funktion/Möglichkeit?

Christian
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Freitag 27. Juli 2007, 11:06

Mehrzeilige Strings mit """ brauchen kein \n für einen Zeilenumbruch:
Das geht ganz einfach so...

Code: Alles auswählen

In [22]: t = """Das ist ein Text
   ....: der ueber mehrere
   ....: Zeilen geht.
   ....:    Mit Einrueckung!!
   ....: """

In [23]: print t
Das ist ein Text
der ueber mehrere
Zeilen geht.
   Mit Einrueckung!!


In [24]:
Edit: So sehen die Strings intern aus:

Code: Alles auswählen

In [26]: t
Out[26]: 'Das ist ein Text\nder ueber mehrere \nZeilen geht.\n   Mit Einrueckung!!\n'
In [27]: print t.__repr__()
'Das ist ein Text\nder ueber mehrere \nZeilen geht.\n   Mit Einrueckung!!\n'
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 27. Juli 2007, 12:02

Ist doch alles kein Problem, dazu gibt es in Python Raw-Strings mit dem ``r``-Literal, dass vor die Quotes gestellt wird:

Code: Alles auswählen

In [23]: s = r"""
   ....: lol
   ....: rofl
   ....: "\n"
   ....: lmao
   ....: """
In [24]: print s

lol
rofl
"\n"
lmao
Übrigens - ``print`` ist ein Statement und keine Funktion. Noch nicht.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
KoenigGunther
User
Beiträge: 22
Registriert: Donnerstag 19. April 2007, 10:05

Mittwoch 1. August 2007, 07:06

Hoppla - ich hab wohl damals vergessen den Absenden-Button zu drücken :D
Vielen Dank! Das vorangestellte 'r' hatte ich total vergessen.

Themen als gelöst zu markieren muss ich/geht hier gar nicht, oder?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 1. August 2007, 07:32

KoenigGunther hat geschrieben:Themen als gelöst zu markieren muss ich/geht hier gar nicht, oder?
Hallo KoenigGunther!

Da es sich hier im Board alles um Python handelt, wird so gut wie alles "gelöst". :D
Es rentiert sich also nicht, irgendwelche Themen als "gelöst" zu markieren, da sie sowiso fast alle "gelöst" werden.

Wenn es jemand machen möchte, dann kann er/sie ein Thema nach ein paar Tagen ohne Antwort als "ungelöst" markieren. ;-)

Wenn du das tun möchtest --> Du kannst deine eigenen Beiträge editieren. Wenn du den ersten Beitrag eines Themas editierst, dann kannst du auch dessen Titel ändern und z.B. den Text "[ungelöst]" rein schreiben.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Donnerstag 2. August 2007, 00:23

ach, ich möchte an den thread erinnern den ich nach über 4 jahren aus der versenkung geholt habe (jaja, seite 89 war das) um ihn zu beantworten :D

nee, aber echt, bis dorthin ist mir fast keiner aufgefallen den es:
1. zu beantworten gelohnt hätte
2. ich beantworten hätte können

somit hat gerold wohl recht

lgherby
KoenigGunther
User
Beiträge: 22
Registriert: Donnerstag 19. April 2007, 10:05

Donnerstag 2. August 2007, 09:22

Geht klar, dann kann ich das auch nicht vergessen zu erledigen :)
Antworten