为了澄清起见,我重新编写了附加信息。在
考虑以下因素:
y = hex(1200)
y
'0x4b0'
我需要用“\”替换y的前0,使其看起来像“\x04b0”。我正在通过RS-232串行与一个仪器通信,它严格按照该格式('\xSumCharsHere')获取参数。Python不允许我执行以下操作。在
^{pr2}$以下是不可接受的,因为它在分配给z的实际值中仍然有'\\'
z = '\\' + y[1:]
z
'\\x4b0'
最终目标是向串行端口发送如下命令:
s.write(z) # s is a serial object
s.write('\x04b0') # This call is an equivalent of the call above
s.write('\\x04b0') # This command will not work
最后一个代码位是正确的,也可以使用原始字符串编写:
正如cdhowie在回答中所说:
不过,这是手工编写转义序列的一种替代方法,我认为这是一种更好的编码方法,因为它更具可读性。在
你的最后一段代码并不像你想象的那样:
在Python控制台中输入变量名时,Python将字符串的表示形式打印为Python code,这就是为什么会看到两个反斜杠——Python字符串中的文本反斜杠被另一个前导反斜杠转义。这段代码实际上起作用了,结果的表示只是把你甩了。在
不过,我建议您改用这段代码,因为您的代码省略了前导的零:
^{pr2}$后者将起作用。在控制台中,Python使用
repr()
来打印对象,在本例中,对象将显示双斜杠。在控制台中执行print y
,您将看到它正确地输出。在您还可以稍微清理一下您的第一个示例:
或者第二个:
^{pr2}$相关问题 更多 >
编程相关推荐