我有一个字节对象,想要测试特定的ASCII字符是否在特定位置。
我简单地写了像
这样的代码if b[i] == b"\n":
问题是这不起作用,经过对repr的一些实验后发现,索引字符串时产生一个字符串索引一个字节产生一个数字,比较一个数字和一个字节总是返回false。
我通过
修复了这个问题if b[i] == b"\n"[0]:
我意识到我也可以做到
if b[i:i+1] == b"\n":
是否有理由偏好另一种方法?
是否有更整洁的解决方案?
答案 0 :(得分:2)
一个更简洁的解决方案可能是使用ord
,它返回一个代码点(整数):
>>> ord(b'\n')
10
话虽这么说,使用切片的方法也很好。只是要小心,切出边界会返回一个空字符串,而不是触发IndexError
。