Python unicodeescape问题

时间:2012-07-19 00:09:26

标签: python char hex unicode-escapes

我整天工作,没有结果在Python 3.2中将整数转换为“\ x ..”形式的字符串。当使用ascii转换或其他我得到'0x ..'或'\\ x ..'时,这对我来说不合适。 任何字节或unicode(“\ u92”)添加操作结果与“SyntaxError :( unicode error)'unicodeescape'编解码器无法解码位置0-2中的字节:转义序列中字符串的结尾”

>>>bytes([92])
b'\\'

>>>chr(92) + "x" + str(42)
'\\x42' 

>>> str(hex(66))
'0x42'

>>>ascii(bytes([255])).replace(r"'b\", "")
File "<stdin>", line 1
   ascii(bytes([255])).replace(r"'b\", "")
                                      ^
SyntaxError: invalid syntax

>>> "\x".encode('raw_unicode_escape').decode('ascii')
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: end of string in escape sequence

4 个答案:

答案 0 :(得分:2)

Oy vey ......

>>> b'\\x42'.decode('unicode-escape')
'B'

答案 1 :(得分:0)

我很难读到这个问题,但我相信这就是你想要做的事情。

>>> aString = str('\\') + str(42)
>>> print aString
\42

如果您需要\

之后的x
>>> aString = str('\\') + 'x' + str(42)
>>> print aString
\x42

答案 2 :(得分:0)

请注意,在ascii(bytes([255])).replace(r"'b\", "")中,\之后的b转义了以下",导致SyntaxError

尝试转义\

>>>ascii(bytes([255])).replace(r"'b\\", "")

答案 3 :(得分:0)

>>> chr(92)
'\\'

结果显示2个斜杠,但该字符串实际上只包含一个。这就是字符串显示的方式。如果你print,你会看到它真正包含的内容。

>>> r"'b\"
SyntaxError: EOL while scanning string literal

不允许原始字符串以\结尾,以便可以使用\来转义字符串中间的引号。不确定我是否同意Python设计的这一方面,但可以在Why can't Python's raw string literals end with a single backslash?

找到更多信息
>>> "\x"
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: end of string in escape sequence

您启动了一个转义序列,该序列可以通过十六进制数识别字符,但不会使用十六进制数字跟踪它。

跟进#1点,也许这解释了你的困惑:

>>> chr(92) + "x" + str(42)
'\\x42'
>>> print(chr(92) + "x" + str(42))
\x42