How to 'de-slashify' a string?
ak at nothere.com
Sat Aug 22 12:09:20 CEST 2009
Steven D'Aprano wrote:
> On Sat, 22 Aug 2009 04:20:23 -0400, AK wrote:
>> Hi, if I have a string '\\303\\266', how can I convert it to '\303\266'
>> in a general way?
> It's not clear what you mean.
> Do you mean you have a string '\\303\\266', that is:
> backslash backslash three zero three backslash backslash two six six
> If so, then the simplest way is:
>>>> s = r'\\303\\266' # note the raw string
>>>> print s
>>>> print s.replace('\\\\', '\\')
> Another possibility:
>>>> s = '\\303\\266' # this is not a raw string
>>>> print s
> So s is:
> backslash three zero three backslash two six six
> and you don't need to do any more.
Well, I need the string itself to become '\303\266', not to print
that way. In other words, when I do 'print s', it should display
unicode characters if my term is set to show them, instead of
>> The problem I'm running into is that I'm connecting with pygresql to a
>> postgres database and when I get fields that are of 'char' type, I get
>> them in unicode, but when I get fields of 'byte' type, I get the text
>> with quoted slashes, e.g. '\303' becomes '\\303' and so on.
> Is pygresql quoting the backslash, or do you just think it is quoting the
> backslashes? How do you know? E.g. if you have '\\303', what is the
> length of that? 4 or 5?
Length is 4, and I need it to be length of 1. E.g.:
>>> s = '\303'
>>> x = '\\303'
What I get from pygresql is x, what I need is s. Either by asking
pygresql to do this or convert it afterwards. I can't do
replace('\\303', '\303') because it can be any unicode character.
More information about the Python-list