在一個比較函數我bascially尋找一個模式(例如「AAA」)長二進制對象(例如,aaaAAAbbbBBB)Python - 通過二進制對象「窗口化」迭代?
我通過文件工作向後內(我知道這場比賽會更靠近端比開始),加法1個字節到可變正被檢查的匹配:發現
1. aaaAAAbbbBB[B]
2. aaaAAAbbbB[BB]
3. aaaAAAbbb[BBB]
4. aaaAAAbb[bBBB]
5. ...
n. aaa[AAAbbbBBB]
匹配,偏移= -n
鑑於我知道我的圖案是3種元素很久以來,我想知道我是否可以簡單地對搜索變量進行窗口而不是增加搜索變量 - 當它變得非常緩慢時比賽是深列表中的百萬元 - 同一數據的窗口看法是:
1. aaaAAAbbb[BBB]
2. aaaAAAbb[bBB]B
3. aaaAAAb[bbB]BB
4. aaaAAA[bbb]BBB
5. ...
n. aaa[AAA]bbbBBB
發現匹配,偏移量= -n
我目前的搜索是這樣的:
if marker in f_data[-counter:]:
offset = (len(f_data)-counter)+len(marker)
return offset
在MATLAB中,我將使用數組尋址來移動數組(例如,我認爲這是不可能的在Python(2.7)
我可以看到一些建議,使用滑動窗口,(()窗口= a [5:8],窗口= a [4:7]等) Rolling or sliding window iterator in Python - 這看起來像一個近似匹配),但我看不到如何實現它或他們引用我不知道如何使用的庫。
是否有內置功能?
你能把整個文件放在內存中嗎? – monkut