0

我工作了一整天,在 Python 3.2中将整数转换为形式为"\x.."的字符串没有任何结果。当使用 ascii 转换或其他时,我得到 '0x..' 或 '\\x..',这不适合我。任何字节或 unicode ("\u92") 添加操作都会导致"SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-2: end of string in escape sequence"

>>>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

4 回答 4

2

OY合租...

>>> b'\\x42'.decode('unicode-escape')
'B'
于 2012-07-19T01:07:57.480 回答
0

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

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

如果你需要 \ 之后的 x

>>> aString = str('\\') + 'x' + str(42)
>>> print aString
\x42
于 2012-07-19T00:32:30.463 回答
0

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

尝试转义\

>>>ascii(bytes([255])).replace(r"'b\\", "")
于 2012-07-19T00:33:33.477 回答
0
>>> chr(92)
'\\'

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

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

原始字符串不允许以 a 结尾,\以便\可以用来转义字符串中间的引号。不确定我是否同意 Python 设计的这一方面,但可以在为什么 Python 的原始字符串文字不能以单个反斜杠结尾?

>>> "\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
于 2012-07-19T00:37:23.413 回答