显然,我正在使用telnetlib.expect()与一个以字节串响应的设备进行接口。除非我在传递给expect()的正则表达式(预编译或文字)中使用字节字符串,否则将生成一个异常:TypeError: cannot use a string pattern on a bytes-like object。然而,pycodestyle抱怨这是W605 invalid escape sequence '\d',进一步的阅读使我认为这将成为将来的Python语法错误。
总结如下:
telnetlib.expect([b'\d']) # OK, but W065
telnetlib.expect(['\d'] # TypeError
telnetlib.expect([r'\d'] # TypeError是否有办法解决这一问题,或者说,pycodestyle是完全错误的?
(顺便说一句,除了禁止所有警告之外,似乎无法在pycodestyle中抑制W065。)
发布于 2018-11-09 10:59:52
字节字符串文本使用\作为转义字符的方式与字符串文本相同。因此,与它们类似,您必须使用原始字节串文本rb'\d'或使用双反斜杠b'\\d'。
来自analysis.html#string-and-bytes-literals
在简单的英语中:两种类型的文字都可以用匹配的单引号(
')或双引号(")括起来。它们也可以包含在三个单引号或双引号的匹配组中(通常称为三引号)。反斜杠(\)字符用于转义具有特殊意义的字符,如换行符、反斜杠本身或引号字符。
https://stackoverflow.com/questions/53223306
复制相似问题