可能重复:
在python中转换字符串,如\\ uXXXX
嗨,假设我有字符串
test
'\\u0259'
Run Code Online (Sandbox Code Playgroud)
注意转义反斜杠.
如何将其转换为相应的unicode字符串?
我有一个看起来像这样的字符串:
"{\\x22username\\x22:\\x229\\x22,\\x22password\\x22:\\x226\\x22,\\x22id\\x22:\\x222c8bfa56-f5d9\\x22, \\x22FName\\x22:\\x22AnkQcAJyrqpg\\x22}"
Run Code Online (Sandbox Code Playgroud)
据我了解\x22是".那么我怎么能把它转换成一个可读的JSON,并带有键和值的引号?
如果我有一个字符串(0x61 0x62 0xD),repr该字符串的函数将返回'ab\r'.
有没有办法进行反向操作:如果我有字符串'ab\r'(带字符0x61 0x62 0x5C 0x72),我需要获取字符串0x61 0x62 0xD.
在python2中,有string-escape和unicode-escape.对于utf-8字节字符串,string-escape可以转义\并保留非ascii字节,如:
"??\\n".decode('string-escape')
'\xe4\xbd\xa0\xe5\xa5\xbd\n'
Run Code Online (Sandbox Code Playgroud)
但是,在python3中,string-escape被删除.我们必须将字符串编码为字节并使用以下方法解码unicode-escape:
"This\\n".encode('utf_8').decode('unicode_escape')
'This\n'
Run Code Online (Sandbox Code Playgroud)
它适用于ascii字节.但是非ascii字节也将被转义:
"??\\n".encode('utf_8')
b'\xe4\xbd\xa0\xe5\xa5\xbd\\n'
"??\\n".encode('utf_8').decode('unicode_escape').encode('utf_8')
b'\xc3\xa4\xc2\xbd\xc2\xa0\xc3\xa5\xc2\xa5\xc2\xbd\n'
Run Code Online (Sandbox Code Playgroud)
所有非ascii字节都被转义,这会导致编码错误.
那么有解决方案吗?在python3中是否可以保留所有非ascii字节并解码所有转义字符?
例如:
t = str.encode(msg)
print(t)
Run Code Online (Sandbox Code Playgroud)
我收到双斜杠,如下所示:
b'\\xda\\xad\\x94\\xb4\\x0bg\\x92]R\\x9a1y\\x9d\\xed\\x04\\xd5\\x8e+\\x07\\xf8\\x03\\x1bm\\xd6\\x96\\x10\\xca80\\xe26\\x8a
Run Code Online (Sandbox Code Playgroud)
但是,我想得到的结果是:
b'\xda\xad\x94\xb4\x0bg\x92]R\x9a1y\x9d\xed\x04\xd5\x8e+\x07\xf8\x03\x1bm\xd6\x96\x10\xca80\xe26\x8a'
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
我一直在搞乱python re modules .search方法.cur是来自Tkinter条目小部件的输入.每当我在条目小部件中输入"\"时,它都会抛出此错误.我不能确定错误是什么或如何处理它.任何见解都会非常感激.
cur是一个字符串
tup [0]也是一个字符串
片段:
se = re.search(cur, tup[0], flags=re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\Lib\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Python26\Suite\quidgets7.py", line 2874, in quick_links_results
self.quick_links_results_s()
File "C:\Python26\Suite\quidgets7.py", line 2893, in quick_links_results_s
se = re.search(cur, tup[0], flags=re.IGNORECASE)
File "C:\Python26\Lib\re.py", line 142, in search
return _compile(pattern, flags).search(string)
File "C:\Python26\Lib\re.py", line 245, in _compile
raise error, v # invalid expression
error: bogus escape (end of …Run Code Online (Sandbox Code Playgroud) 可能重复:
在Python中处理字符串中的转义序列
如果我得到这个字符串,例如从Web表单:
'\n test'
Run Code Online (Sandbox Code Playgroud)
该'\n'符号将不被解释为一个换行符.我如何解析这个字符串,使它成为一个换行符?
当然,我可以使用replace,split,re等,做手工.
但也许有一个模块,因为我不想被迫\something手动处理所有的符号.
我试图把它变成字节然后str用作construtor但是不起作用:
>>> str(io.BytesIO(ur'\n'.encode('utf-8')).read())
'\\n'
Run Code Online (Sandbox Code Playgroud) 我有一个问题.我有这个字符串:
a=O\x8c\x90\x05\xa1\xe2!\xbe
Run Code Online (Sandbox Code Playgroud)
如果我使用:
c=str.encode(a)
Run Code Online (Sandbox Code Playgroud)
这是结果:
b'O\\x8c\\x90\\x05\\xa1\\xe2!\\xbe'
Run Code Online (Sandbox Code Playgroud)
我需要那些双反斜杠是单反斜杠,我真的需要这种类型的数据是BYTES.我需要回复这个:
c=b'0\x8c\x90\x05\xa1\xe2!\xbe'
Run Code Online (Sandbox Code Playgroud)
并输入(c)== bytes任何想法?
我想把这个字符串:
a = '\\a'
Run Code Online (Sandbox Code Playgroud)
进入这个
b = '\a'
Run Code Online (Sandbox Code Playgroud)
似乎有一种明显的方法可以做到这一点replace?
编辑:更确切地说,我想改变反斜杠的转义以逃避角色 a
我想将包含转义字符的字符串转换为它们的正常形式,就像Python的词法解析器一样:
>>> escaped_str = 'One \\\'example\\\''
>>> print(escaped_str)
One \'Example\'
>>> normal_str = normalize_str(escaped_str)
>>> print(normal_str)
One 'Example'
Run Code Online (Sandbox Code Playgroud)
当然,无聊的方法是逐个替换所有已知的转义字符:http: //docs.python.org/reference/lexical_analysis.html#string-literals
您将如何normalize_str()在上面的代码中实现?