2014-10-16 100 views
1

我有一個base64 blob,我已經從數據庫中加載。我已解碼它,現在需要搜索它的字符串。 blob可以包含二進制(不可打印)字節。搜索一個字符串的斑點

到目前爲止我的代碼很簡單

for row in cursor: 
     b = base64.standard_b64decode(row[2]) 

所以我需要找到在B字符串「XY-X」的位置

回答

0

「二進制的blob」簡直是Python中的字符串,這樣你就可以使用str.index

i= b.index('xyx') 

i變爲的'xyx'b的位置的基於0的索引的值。注意這將計數字節,而不是字符。

您還可以使用str.find,如果你不想養一個例外情況'xyx' not in b

+0

str.find(「XYZ」)給我的UnicodeDecodeError:「ASCII」編解碼器不能解碼位置字節和0xAA 17:序號不在範圍內(128) – Paul 2014-10-16 13:52:18

+0

@Paul你確定你沒有試圖在某處「解碼」字符串嗎? 'index'和'find'不應該嘗試解碼字符。嘗試以下操作:'(「」.join(map(chr,range(256))))。index('\ xff')' – goncalopp 2014-10-16 14:01:27