<p>您正在字符串中搜索两个单独的项。如果将它们拆分为一个列表,那么下面的代码将找到它们</p>
<pre class="lang-py prettyprint-override"><code>
lk = [ 'Motor','101' ]
s1 = [ 'Device Motor_101 is very high',
'101Motor Device is very high',
'Motor device 101 is very is high' ]
for i, a in enumerate( s1 ):
result = -1
for b in a.split():
if lk[0] in b:
result = i
if lk[1] in b:
if result > -1:
print( f'found in {a}' )
</code></pre>
<p>此代码将搜索并查找两个以上的项目</p>
<pre class="lang-py prettyprint-override"><code>
lk = [ 'Motor','101' ]
ln = len( lk )
s1 = [ 'Device Motor_101 is very high',
'101Motor Device is very high',
'Motor device 101 is very is high' ]
found = []
for i, a in enumerate( s1 ):
for b in a.split():
result = -1
for gp in range( ln ):
if lk[ gp ] in b:
result += 1
if result > -1 and found.count( a ) == 0:
found.append( a )
print( f'found in {a}' )
print( f'{found}' )
</code></pre>
<p>好的,我发现单词的重复会导致误报,所以。。。
这是我的第三次尝试</p>
<pre class="lang-py prettyprint-override"><code>
lk = [ 'sky', '101', 'Motor', 'very' ]
ln = len( lk )
s1 = [ 'Device Motor_101 is very high in sky',
'101Motor Device is sky sky very',
'Motor device is very is high very very' ]
found = []
for i, a in enumerate( s1 ):
result = 0
sa = a.split( )
for b in a.split():
for gp in range( ln ):
if lk[ gp ] in b:
if b in sa:
sa.remove( b )
result += 1
if result == ln-1:
found.append( a )
print( f'{found}' )
</code></pre>