我有大量的子字符串列表,我想要搜索并查找是否可以在一行中找到两个特定的子字符串。该逻辑旨在查找第一个序列,如果找到,则查看第二个子字符串并返回所有匹配(基于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