Python场景问题
我在Python3.2上工作了一整天,没有结果将整数转换成字符串形式“\x…”。当使用ascii转换或其他转换时,我得到“0x..”或“\\x..”,这对我来说不合适。 任何字节或unicode(“\u92”)使用“SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码位置0-2:转义序列中字符串结尾处的字节”添加操作结果Python场景问题,python,char,hex,unicode-escapes,Python,Char,Hex,Unicode Escapes,我在Python3.2上工作了一整天,没有结果将整数转换成字符串形式“\x…”。当使用ascii转换或其他转换时,我得到“0x..”或“\\x..”,这对我来说不合适。 任何字节或unicode(“\u92”)使用“SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码位置0-2:转义序列中字符串结尾处的字节”添加操作结果 >>字节([92]) b'\\' >>>chr(92)+“x”+str(42) “\\x42” >>>str(十六进制(66)) “0x4
>>字节([92])
b'\\'
>>>chr(92)+“x”+str(42)
“\\x42”
>>>str(十六进制(66))
“0x42”
>>>ascii(字节([255])。替换为(r“'b\”,“”)
文件“”,第1行
ascii(字节([255])。替换为(r“'b\”,“”)
^
SyntaxError:无效语法
>>>“\x”.encode('raw\u unicode\u escape')。decode('ascii')
文件“”,第1行
SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码转义序列中位置0-1:字符串结尾的字节
我很难读懂这个问题,但我相信这就是你想要做的
>>> aString = str('\\') + str(42)
>>> print aString
\42
如果你需要在\
>>> aString = str('\\') + 'x' + str(42)
>>> print aString
\x42
请注意,在ascii(字节([255]).replace(r“'b\”,”)
中,b
之后的\
转义了以下”
,这会导致语法错误
尝试转义\
:
>>>ascii(bytes([255])).replace(r"'b\\", "")
结果显示了两个斜杠,但字符串实际上只包含一个。这就是字符串的显示方式。如果print
it,您将看到它真正包含的内容
>>> r"'b\"
SyntaxError: EOL while scanning string literal
原始字符串不允许以<代码> \/COD>结尾,因此可以使用<代码> \/COD>来跳出字符串中间的引用。不确定我是否同意Python设计的这一方面,但可以在
中找到更多信息。
您启动了一个转义序列,该序列将通过字符的十六进制数来识别字符,但后面没有十六进制数
关于第1点,也许这解释了你的困惑:
>>> chr(92) + "x" + str(42)
'\\x42'
>>> print(chr(92) + "x" + str(42))
\x42
哦,维
>>> b'\\x42'.decode('unicode-escape')
'B'
请举一个你想要的输入和输出的例子。从你的帖子很难看出你想做什么。你是说你想从数字42到“\x42”“?如果您想要的是'\x42'
,那么它将被打印为'B'
,因为它们是相同的东西。这只是我必须创建表示符号的字符串的机制的一部分,我相信下面的代码是一个解决方案。”。my_data=str(“0a”)#例如(chr(92)+“x”+my_data).encode(“utf8”).decode('unicode-escape')Rer“'b\”
,原始字符串不能以单个反斜杠结尾,因为反斜杠“转义”了”
,尽管它也包含在字符串中,所以r“'b\”
打印为'b>\“
@MRAB,谢谢。找到一个确凿的链接并将其添加到答案中。您再次发布了相同的代码。你是想再加一个反斜杠吗?我知道,但加两个反斜杠会产生一些奇怪的结果。我认为(chr(92)+“x”+我的_数据)、编码(“utf8”)、解码(“unicode-escape”)应该可以解决我的问题。谢谢。我相信这就是我一直在寻找的。+1就你的读心能力而言,它们比我的好。
>>> "\x"
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: end of string in escape sequence
>>> chr(92) + "x" + str(42)
'\\x42'
>>> print(chr(92) + "x" + str(42))
\x42
>>> b'\\x42'.decode('unicode-escape')
'B'