'\' an string anfügen

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
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Hallo Leute!

Ich will an einen String das Zeichen '\' anfügen.

Code: Alles auswählen

string='\'+string
Wird aber nicht gemacht. Warum?
Ist das ein Zeichen für Kommentar?

Danke,
johannes
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

\ ist ein sonderzeichen zum einleiten von Sonderzeichen ;) Also \n für newline und \t für tab...

Entweder zu escapest das Zeichen einfach mit der dopplung:

Code: Alles auswählen

string='\\'+string
oder du machst ein rawstring daraus:

Code: Alles auswählen

string=r'\'+string

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

irgendsowas hab ich vermutet gehabt.

danke für die rasche antwort. :wink:


Lg
johannes
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

bei mir funktioniert r'\' nicht:

Code: Alles auswählen

Python 2.3.5 (#62, Feb  8 2005, 16:23:02) [MSC v.1200 32 bit (Intel)] on win32
>>> print r'\'
  File "<stdin>", line 1
    print r'\'
             ^
SyntaxError: EOL while scanning single-quoted string
Gromit
User
Beiträge: 51
Registriert: Montag 8. Mai 2006, 19:07

Funkt nicht: Funkt:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

murphy hat geschrieben:bei mir funktioniert r'\' nicht
Hi murphy!

Das ist eine Ausnahme. -- leider -- Der Backslash (\) darf nicht an letzter Stelle stehen. -- Warum auch immer.

In solchen Fällen bleibt dir nichts anderes übrig, als "\" (ohne r) zu schreiben.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

gerold hat geschrieben:Das ist eine Ausnahme. -- leider -- Der Backslash (\) darf nicht an letzter Stelle stehen. -- Warum auch immer.
ist doch irgendwie logisch - man muss ja auch single quotes in den string schreiben dürfen, und damit Python das vom string-ende unterscheiden kann, werden sie maskiert.
ein einzelner slash am ende wäre so ein maskiertes ' - und der string wäre noch offen.
also doch kein fehler im highlighting ;)
darkfrog
User
Beiträge: 26
Registriert: Mittwoch 19. Juli 2006, 16:19

'\\' scheint bei mir aber nicht zu funktionieren:

Code: Alles auswählen

wort = re.sub(r"^'''", u"""\\""" + u"""bold{""", wort)
als Ausgabe erhalte ich immer old{
BlackJack

darkfrog hat geschrieben:'\\' scheint bei mir aber nicht zu funktionieren:

Code: Alles auswählen

wort = re.sub(r"^'''", u"""\""" + u"""bold{""", wort)
als Ausgabe erhalte ich immer old{
Du hast den Rückschritt unterschlagen der vorher ausgegeben wird:

Code: Alles auswählen

In [72]: re.sub(r"^'''", u"""\""" + u"""bold{""", "'''spam")
Out[72]: u'\x08old{spam'

In [73]: '\b'
Out[73]: '\x08'
Mit dem '\\' erzeugst Du einen Backslash, aber in regulären Ausdrücken gibt's auch wieder die Escape-Sequenzen, also musst Du doppelt escapen:

Code: Alles auswählen

In [74]: re.sub(r"^'''", u"""\\\""" + u"""bold{""", "'''spam")
Out[74]: u'\\bold{spam'

In [75]: print re.sub(r"^'''", u"""\\\""" + u"""bold{""", "'''spam")
\bold{spam
Oder halt etwas kürzer als Raw-String:

Code: Alles auswählen

In [76]: print re.sub(r"^'''", r'\\bold{', "'''spam")
\bold{spam
darkfrog
User
Beiträge: 26
Registriert: Mittwoch 19. Juli 2006, 16:19

vielen dank,

ich dachte zwar ich hätte das mit dem rawstring schon so ausprobiert, aber anscheinend täusche ich mich da :wink:
pythonforumuser
User
Beiträge: 4
Registriert: Dienstag 8. Juli 2008, 09:29

Hallo,

bei mir funktioniert das leider nicht:
Python-Interpreter:

Code: Alles auswählen

>>> pfad='D:\\tmp'
>>> pfad
'D:\\tmp'
und:
Python-Interpreter:

Code: Alles auswählen

>>> pfad=r'D:\tmp'
>>> pfad
'D:\\tmp'
Könnte mir jemand sagen, wie ich eine String-Variable erhalte, wo der backslash nur einmal und nicht doppelt drin ist?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

was dir angezeigt wird ist "repr(mein_string)".

Wenn du den String mit print ausgibst erscheint nur ein \ .
pythonforumuser
User
Beiträge: 4
Registriert: Dienstag 8. Juli 2008, 09:29

Dankeschön. Das passt! :-)
Antworten