2014-09-04 46 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函數將在對象中返回您正在查找的項目的索引。請注意,如果在對象中未找到正在搜索的項目,則會引發異常。

相關問題