在比较函数中,我基本上在长二进制对象内寻找模式(例如"AAA")(例如,aaaAAAbbbBBB)
我正在通过文件向后工作(我知道匹配将比结束更接近结束),向正在检查匹配的变量添加1个字节:
1. aaaAAAbbbBB[B]
2. aaaAAAbbbB[BB]
3. aaaAAAbbb[BBB]
4. aaaAAAbb[bBBB]
5. ...
n. aaa[AAAbbbBBB]
Run Code Online (Sandbox Code Playgroud)
匹配找到,偏移= -n
鉴于我知道我的模式是3个元素长,我想知道我是否可以简单地窗口搜索变量而不是递增它 - 当匹配列表中的+1,000,000个元素时它变得非常慢 - 相同数据的窗口视图将是:
1. aaaAAAbbb[BBB]
2. aaaAAAbb[bBB]B
3. aaaAAAb[bbB]BB
4. aaaAAA[bbb]BBB
5. ...
n. aaa[AAA]bbbBBB
Run Code Online (Sandbox Code Playgroud)
匹配找到,偏移= -n
我目前的搜索结果如下:
if marker in f_data[-counter:]:
offset = (len(f_data)-counter)+len(marker)
return offset
Run Code Online (Sandbox Code Playgroud)
在MATLAB我会使用的阵列寻址通过阵列移动,(例如调用窗口=α[5:8],窗口= A [4:7]等),但我不认为在Python这是可能的(2.7)
我可以看到使用滑动窗口,几点建议(滚动或滑动Python窗口迭代器 -这看起来像一场势均力敌的比赛),但我看不出如何实现它或它们引用库,我不知道该怎么使用.
这样做有内置功能吗?
为什么不使用rfind()或rindex()?
haystack = "aaaAAAbbbBBB"
needle = "AAA"
pos = haystack.rfind(needle)
if pos >= 0:
print "found at", pos - len(haystack)
else:
print "not found"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |