在python中使用re.search()打印列表中出现的字符串不匹配

在python中使用re.search()打印列表中出现的字符串不匹配,python,regex,Python,Regex,以下代码生成如下输出: import re lst1 = ['abc','xyz'] lst2 = ['abc','xxx'] for i in range(len(lst1)): x = re.search(lst2[i], lst1[i]) print(x) 这里的第一个不匹配发生在两个列表中的x之后,因此是所需的输出。 请输入。这里有一种方法 Mismatch: lst1 x*yz lst2 x*xx 这里有一种方法 Mismatch: lst1 x*yz

以下代码生成如下输出:

import re
lst1 = ['abc','xyz']
lst2 = ['abc','xxx']
for i in range(len(lst1)):
    x = re.search(lst2[i], lst1[i])
    print(x)
    
这里的第一个不匹配发生在两个列表中的x之后,因此是所需的输出。
请输入。

这里有一种方法

Mismatch: lst1
x*yz

lst2
x*xx

这里有一种方法

Mismatch: lst1
x*yz

lst2
x*xx

这是我的解决方案,您可以尝试:

lst1
x*yz
lst2
x*xx
输出

import re

lst1 = ['abc','xyz','xxzz','xxz']
lst2 = ['abc','xxx','xxx','xxxx']
for i in range( min( len(lst1), len(lst2) )):
    re_compiler=re.compile('^'+lst2[i]+'$')
    match=re_compiler.search(lst1[i])
    if match==None:
        misIndex=0
        for x in range( min( len(lst1[i]), len(lst2[i]) )):
            if lst1[i][x]==lst2[i][x]:
                misIndex+=1
            else: break

        misLst1=(lst1[i][0:misIndex] +'*'+ lst1[i][misIndex:])
        misLst2=(lst2[i][0:misIndex] +'*'+ lst2[i][misIndex:])
        
        print(
            'Mismatch: lst1'+'\n' +
            misLst1 +'\n' +
                    '\n'+
            'lst2'  +'\n' +
            misLst2 +'\n'
            )

这是我的解决方案,您可以尝试:

lst1
x*yz
lst2
x*xx
输出

import re

lst1 = ['abc','xyz','xxzz','xxz']
lst2 = ['abc','xxx','xxx','xxxx']
for i in range( min( len(lst1), len(lst2) )):
    re_compiler=re.compile('^'+lst2[i]+'$')
    match=re_compiler.search(lst1[i])
    if match==None:
        misIndex=0
        for x in range( min( len(lst1[i]), len(lst2[i]) )):
            if lst1[i][x]==lst2[i][x]:
                misIndex+=1
            else: break

        misLst1=(lst1[i][0:misIndex] +'*'+ lst1[i][misIndex:])
        misLst2=(lst2[i][0:misIndex] +'*'+ lst2[i][misIndex:])
        
        print(
            'Mismatch: lst1'+'\n' +
            misLst1 +'\n' +
                    '\n'+
            'lst2'  +'\n' +
            misLst2 +'\n'
            )

感谢您提供的解决方案,当在缺少的字符串上放置“*”时,它会给出一个错误,不能将序列与类型为“str”的非int相乘,看起来像一些缺少的引号;可能应该是
print('lst1\n',i[:first\u mismatch],*'',i[first\u mismatch:])
将尝试所有类型的输入并相应地更改代码。感谢you@ManjunathR您还需要帮助吗?谢谢您提供的解决方案,在缺少的字符串上放置“*”时,它会给出一个错误,不能将序列乘以类型为“str”的非int,看起来像是缺少引号;可能应该是
print('lst1\n',i[:first\u mismatch],*'',i[first\u mismatch:])
将尝试所有类型的输入并相应地更改代码。感谢you@ManjunathR你在这里还需要帮助吗?工作正常,也会尝试其他类型的输入。谢谢你工作顺利,我也会尝试其他类型的输入。非常感谢。