调用x.find("Sensor")报TypeError非类字节对象错误如何解决
问题根因
报错触发的核心原因是变量x为bytes二进制类型,该类型的find()方法仅支持传入整数或bytes类型参数,你传入了字符串类型的"Sensor",因此触发类型错误。
解决方法
- 方案1:匹配二进制类型参数(适合仅需做单次查找、无需后续字符串操作的场景)
直接给查找的字符串添加b前缀转为bytes类型,代码修改为:
if x.find(b"Sensor")!=-1 :
也可以用更简洁的in语法实现等价判断:
if b"Sensor" in x:
- 方案2:将二进制变量转为字符串后操作(适合后续需要对内容做多次字符串处理的场景)
先对x执行解码操作转为字符串,再做查找判断,代码修改为:
# 可根据实际编码替换utf-8为gbk等对应编码 x_str = x.decode("utf-8") if x_str.find("Sensor")!=-1 :
等价的简洁写法:
if "Sensor" in x.decode("utf-8"):
注意事项
- 如果解码时报编码错误,需要确认
x对应的实际编码格式,替换decode方法的入参即可。 - 如果你预期
x本就应该是字符串类型,可排查上游赋值逻辑,确认是否存在多余的编码操作导致x被转为了bytes类型。
内容的提问来源于stack exchange,提问作者user7987788
相关产品推荐
相关产品推荐

