如何始终以特定值结束切片

时间:2014-09-04 09:57:07

标签: python byte slice

我正在处理许多不同长度的字节对象。但是,它们都将包含我想要结束的某个byte(即,我将始终希望获得一定数量的值,但不会超过该值)。问题是它并不总是最后一个字节(所以我不能只使用[:-1]。我从来没有对之后的内容感兴趣所以我可以忽略后来发生的事情,但我确实需要捕获它前面有什么。

Python中是否有一种方法可以切换到某个而不是某个索引?

[2:'\xf0']

从第三个字节切换到\xf0个字节?

1 个答案:

答案 0 :(得分:1)

在Python 2.x中,您可以使用index函数和切片,就像这样

a = bytearray(b"abcd\xf0asda")
print a[2:a.index('\xf0')]
# cd

在Python 3.x中,您只需要使用bytes对象进行搜索,就像这样

a = b"abcd\xf0asda"
print(a[2:a.index(b'\xf0')])
# b'cd'

index函数将在对象中返回您要查找的项目的索引。请注意,如果在对象中找不到要搜索的项目,它将引发异常。