gpt4 book ai didi

python - 使用 Python 转义序列格式化字符串

转载 作者:行者123 更新时间:2023-11-30 23:41:50 25 4
gpt4 key购买 nike

为了澄清起见,我用附加信息从头开始重写。

考虑以下因素:

y = hex(1200)
y
'0x4b0'

我需要将 y 的第一个 0 替换为“\”,使其看起来像“\x04b0”。我正在与 RS-232 上的仪器进行通信严格按照该格式获取参数的串行('\xSumCharsHere')。 Python 不允许我执行以下操作。

z = '\x' + y[2:]
ValueError: invalid \x escape

以下内容是 Not Acceptable ,因为分配给 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

最佳答案

您的最后一段代码没有按照您的想法执行:

>>> x = hex(1200)
>>> y = '\\' + x[1: len(x)]
>>> y
'\\x4b0'
>>> print y
\x4b0

当您在 Python 控制台中键入变量名称时,Python 会将字符串的表示形式打印为 Python 代码,这就是您看到两个反斜杠的原因 - Python 字符串中的文字反斜杠被转义由另一个前导反斜杠。这段代码实际上确实有效,但结果的表示只是让你失望。

但是,我建议您使用此代码片段,因为您的代码片段省略了前导零:

>>> y = '\\x%04x' % 1200
>>> print y
\x04b0

关于python - 使用 Python 转义序列格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11765625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com