我正在通过套接字连接发送修复消息并在 python 客户端中接收。 我知道有一个 SOH 分隔数据中的每个名称=值对。 但是打印时的数据(作为字符串)不显示 SOH。出现问题是因为我希望能够显示'|'或者我无法在正则表达式中分辨出各个字段的边界是什么。 我查看了接收到的字符串上的 decode('hex'), decode('uu'),但没有取得太大成功。 此外,打包/解包要求您提供格式字符串(我必须为每种类型的修复做这件事)。
我正在为客户端使用 Twisted ClientFactory。
有什么建议吗?
跟进问题: 我使用 repr 并将其传递给函数以将“\x01”替换为“|”。 现在当我直接传入从网络接收的数据时,替换似乎没有影响。但是,当我复制输出并将其作为字符串文字传递给同一函数时。它的行为符合预期(将“\x01”替换为“|”)。 我还尝试使用 re.sub,结果完全相同(当作为字符串文字传入时有效,但直接从网络传入时无效)。 我还将来自网络的值打印到一个文件中,并使用 vi 十六进制编辑器与字符串文字进行比较。它没有显示任何差异。
一些附加信息: 当我打印文件中的值并将其读回时,我无法在 '\x01' 上使用 find,这意味着 replace 也不起作用(它不起作用)。 当我尝试将其转换为字节数组时,当我遍历字节数组时,似乎每个 '\' 、 'x' 、 '0'、'1' 都被解释为不同的字节。这很奇怪。 '\x01' 要么是字符串,要么不是字符串,而是十六进制。
有什么建议吗?
谢谢
请您参考如下方法:
按照 Ignacio Vazquez-Abrams 的建议打印出 repr,解决了部分问题。
