在python中提取不匹配的字符串

在python中提取不匹配的字符串,python,string,python-3.x,Python,String,Python 3.x,我有两个字符串s和s2 s = "catwalksonterrace9_ontheweekend_at7am" s2= "catwalksonterrace$no_ontheweekend_at.*" 我需要比较两个字符串并提取 $no=9和*=7am来自Python中的两个字符串。我是python新手,我该如何实现这一点呢?看看difflib,它非常棒,专为实现您的目标而设计:) 这将创建一个列表列表,其中每个子列表的第一个值在第1行是diff,而seocnd值在第2行是diff 输出将是

我有两个字符串s和s2

s = "catwalksonterrace9_ontheweekend_at7am"
s2= "catwalksonterrace$no_ontheweekend_at.*"
我需要比较两个字符串并提取
$no=9
*=7am
来自Python中的两个字符串。我是python新手,我该如何实现这一点呢?

看看difflib,它非常棒,专为实现您的目标而设计:)

这将创建一个列表列表,其中每个子列表的第一个值在第1行是diff,而seocnd值在第2行是diff

输出将是:

[['$no', '9'], ['.*', '7am']]
然后,您可以循环执行该操作,并按要求打印:

for diff in diffs:
    print(diff[0], "=", diff[1])
具有以下功能:

import difflib, itertools

s1 = "catwalksonterrace9_ontheweekend_at7am"
s2 = "catwalksonterrace$no_ontheweekend_at.*"

result = []
for i in itertools.islice(difflib.unified_diff(s1, s2, lineterm=''), 2, None):
    if i.startswith('@@'):    # diff control line
        result.append(['',''])
    elif i.startswith('-'):   # line unique to sequence 1
        result[-1][0] += i[1:]
    elif i.startswith('+'):   # line unique to sequence 2
        result[-1][1] += i[1:]

print(result)
输出:

[['9', '$no'], ['7am', '.*']]


生成的
结果
列表中的每个子列表都包含一对“旧”和“新”值(即
[,]

它将在结果上给出
尝试执行列表(),而这是您的工作,这里是
[‘c’、‘a’、‘t’、‘w’、‘a’、‘l’、‘k’、‘s’、‘o’、‘n’、‘t’、‘e’、‘r’、‘a’、‘c’、‘e’、‘e’、‘r’、‘a’、‘a’、‘t’、‘n’、‘n’、‘n’、‘t’、‘h’、‘e’、‘w’、‘e’、‘e’、‘e’、‘e’、‘d’、‘a’、‘t’、‘c’、‘c’、‘e’、‘e’、‘e’、‘t’、‘t’、‘n
maor10,@RomanPerekhrest只是想帮助你改进答案。添加细节使你的答案比“这是一个全新的库,可以满足你的需要,带着它去吧”更有用,这不会让你丧命。我会编辑答案以获得准确的结果,但我认为最好是提供一个开始,让“asker”自己完成,所以这不仅仅是复制粘贴的问题;据我所知,这个网站不应该是“为我写一些代码”
[['9', '$no'], ['7am', '.*']]