我整天工作,没有结果在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
答案 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