How to convert a raw string r'\xdd' to '\xdd' more gracefully?
Jach Feng
jfong at ms4.hinet.net
Wed Dec 7 20:16:09 EST 2022
Roel Schroeven 在 2022年12月7日 星期三下午4:42:48 [UTC+8] 的信中寫道:
> Op 7/12/2022 om 4:37 schreef Jach Feng:
> > MRAB 在 2022年12月7日 星期三上午11:04:43 [UTC+8] 的信中寫道:
> > > On 2022-12-07 02:23, Jach Feng wrote:
> > > > s0 = r'\x0a'
> > > > At this moment it was done by
> > > >
> > > > def to1byte(matchobj):
> > > > ....return chr(int('0x' + matchobj.group(1), 16))
> > > > s1 = re.sub(r'\\x([0-9a-fA-F]{2})', to1byte, s0)
> > > >
> > > > But, is it that difficult on doing this simple thing?
> > > >
> > > You could try this:
> > >
> > > >>> s0 = r'\x0a'
> > > >>> ast.literal_eval('"%s"' % s0)
> > > '\n'
> > Not work in my system:-(
> >
> > Python 3.8.8 (tags/v3.8.8:024d805, Feb 19 2021, 13:08:11) [MSC v.1928 32 bit (Intel)] on win32
> > Type "help", "copyright", "credits" or "license" for more information.
> > >>> s0 = r'\x0a'
> > >>> import ast
> > >>> ast.literal_eval("%s" % s0)
> > Traceback (most recent call last):
> > File "<stdin>", line 1, in <module>
> > File "C:\Users\Jach\AppData\Local\Programs\Python\Python38-32\lib\ast.py", line 59, in literal_eval
> > node_or_string = parse(node_or_string, mode='eval')
> > File "C:\Users\Jach\AppData\Local\Programs\Python\Python38-32\lib\ast.py", line 47, in parse
> > return compile(source, filename, mode, flags,
> > File "<unknown>", line 1
> > \x0a
> > ^
> > SyntaxError: unexpected character after line continuation character
> You missed a pair of quotes. They are easily overlooked but very
> important. The point is to wrap your string in another pair of quotes so
> it becomes a valid Python string literal in a Python string which can
> then be passed to ast.literal_eval(). Works for me:
>
> In [7]: s0 = r'\x0a'
>
> In [8]: import ast
>
> In [9]: ast.literal_eval('"%s"' % s0)
> Out[9]: '\n'
>
> --
> "Experience is that marvelous thing that enables you to recognize a
> mistake when you make it again."
> -- Franklin P. Jones
Thank you for notifying me. I did notice those ''' in MRAB's post, but didn't figure out what it is at that time:-(
More information about the Python-list
mailing list