Search code examples
pythonstringbackslash

String replace with backslashes in Python


I'm trying to do a simple replacement of " " with "\s" (the literal \s, not some sort of backslash escape). This is what I think should happen:

>>> 'asdf hjkl'.replace(' ', '\s')
'asdf\shjkl'

I did this:

>>> 'asdf hjkl'.replace(' ', '\s')
'asdf\\shjkl'
>>> 'asdf hjkl'.replace(' ', '\\s')
'asdf\\shjkl'

Neither returns what I expected, and I can't for the life of me understand what's going on. What input do I have to use to get my expected output?


Solution

  • You're getting what you want. It just doesn't look that way in the REPL:

    >>> 'asdf hjkl'.replace(' ', '\s')[4]
    '\\'
    

    As you can see, that's one character, not two.

    Try printing it:

    >>> print 'asdf hjkl'.replace(' ', '\s')
    asdf\shjkl