2014-09-04 48 views
0

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

有没有在Python的方式来切到一定,而不是某个索引?

[2:'\xf0'] 

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

+0

不是在一个切片中,你将不得不找到值的索引。 – jonrsharpe 2014-09-04 09:59:56

回答

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函数将在对象中返回您正在查找的项目的索引。请注意,如果在对象中未找到正在搜索的项目,则会引发异常。

相关问题