我有大量的子字符串列表,我想要搜索並查找是否可以在一行中找到兩個特定的子字符串。該邏輯旨在查找第一個序列,如果找到,則查看第二個子字符串並返回所有匹配(基於16個字符序列的前15個字符)。如果找不到第一個序列,則只查找第二個序列,最後,如果找不到,則默認爲零。然後將匹配附加到列表中,進一步處理。當前使用的代碼如下:子字符串搜索列表一次返回多個條件
dataA = ['0100101010001000',
'1001010100010001',
'0010101000100010',
'0101010001000110',
'1010100010001110',
'0101000100011100',
'1010001000111010',
'0100010001110100',
'1000100011101000',
'0001000111010000']
A_vein_1 = [0,1,0,0,1,0,1,0,1,0,0,0,1,0,0,0]
joined_A_Search_1 = ''.join(map(str,A_vein_1))
print 'search 1', joined_A_Search_1
A_vein_2 = [1,0,0,1,0,1,0,1,0,0,0,1,0,0,0]
joined_A_Search_2 = ''.join(map(str,A_vein_2))
match_A = [] #empty list to append closest match to
#Match search algorithm
for i,text in enumerate(data):
if joined_A_Search_1 == text:
if joined_A_Search_2 == data[i+1][:-1]:
print 'logic stream 1'
match_A.append(data[i+1][-1])
if joined_A_Search_1 != text:
if joined_A_Search_2 == text[:-1]:
print 'logic stream 2'
#print 'match', text[:-1]
match_A.append(text[-1])
print ' A matches', match_A
try:
filter_A = max(set(match_A), key=match_A.count)
except:
filter_A = 0
print 'no match A'
filter_A = int(filter_A)
print '0utput', filter_A
的問題是,我得到兩個邏輯流1和邏輯流2,返回時,其實我是想這是一個嚴格的一個或另一個,在這種情況下,只有邏輯流1.輸出的一個例子是這樣的:
search 1 0100101010001000
search 2 100101010001000
logic stream 1
logic stream 2
logic stream 1
logic stream 2
logic stream 2
(注:該列表已被縮短,並且數據的輸入已被取代的在直接,以及在打印輸出爲以下目的這篇文章和錯誤跟蹤)
這段代碼的目的是要找到失蹤最後一位就是第二序列(因此在底部的最大計數代碼)。當兩個邏輯流都對列表filter_A有貢獻時,精度就會丟失。這就是爲什麼它需要嚴格的一個案例或其他。我想它可能被認爲是所需邏輯的或門類型。 – paperstsoap