Seite 1 von 1

'\' an string anfügen

Verfasst: Montag 8. Mai 2006, 15:11
von keboo
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

Verfasst: Montag 8. Mai 2006, 15:15
von jens
\ 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

Verfasst: Montag 8. Mai 2006, 15:27
von keboo
irgendsowas hab ich vermutet gehabt.

danke für die rasche antwort. :wink:


Lg
johannes

Verfasst: Dienstag 9. Mai 2006, 18:29
von murphy
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

am ende eines strings gehts niccht

Verfasst: Dienstag 9. Mai 2006, 18:59
von Gromit
Funkt nicht: Funkt:

Verfasst: Dienstag 9. Mai 2006, 21:34
von gerold
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
:-)

Verfasst: Dienstag 16. Mai 2006, 15:12
von murphy
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 ;)

Verfasst: Montag 4. Dezember 2006, 14:32
von darkfrog
'\\' 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{

Verfasst: Montag 4. Dezember 2006, 15:35
von 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

Verfasst: Montag 4. Dezember 2006, 15:57
von darkfrog
vielen dank,

ich dachte zwar ich hätte das mit dem rawstring schon so ausprobiert, aber anscheinend täusche ich mich da :wink:

Verfasst: Dienstag 8. Juli 2008, 13:23
von pythonforumuser
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?

Verfasst: Dienstag 8. Juli 2008, 13:34
von audax
was dir angezeigt wird ist "repr(mein_string)".

Wenn du den String mit print ausgibst erscheint nur ein \ .

Verfasst: Dienstag 8. Juli 2008, 13:36
von pythonforumuser
Dankeschön. Das passt! :-)