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

标签 python string escaping hex sequence

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

考虑以下因素:

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/

相关文章:

php - 引用和转义文本字符串建议

python - 如何在元组中复制元素 n 次

python - 使用 Python Mechanize 登录网站时遇到问题。

string - 如何在 Julia 中用零填充格式化整数?

php - 是否有一个 PHP 函数可以在应用正则表达式模式之前对其进行转义?

java - 将有效或无效的 JSON 转换为字符串的好方法是什么?

python - `the shortest path that connects several points` NP完全算法

python - 文件第一行中包含的 unicode header

C++ Builder 允许将字符串与 Int 进行比较 - 为什么?

string - 如何将字符串转换为表格