如何根据给定的模式从列表中提取一组特殊的字符串/单词?

2024-09-28 16:43:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下名称\空格字符列表:

existing_list = ['ns:Insurance/ns:Policy/ns24:Product/ns24:dpname','ns:Insurance/ns:Policy/ns25:Event/ns25:evtname','ns:Insurance/ns:Policy/ns26:Account/ns26:actnum']

updated_list = ['ns:Insurance/ns:Policy/ns14:Product/ns14:dpname','ns:Insurance/ns:Policy/ns15:Event/ns15:evtname','ns:Insurance/ns:Policy/ns16:Account/ns16:actnum']

现在我必须验证existing_list中的项目模式,如果这些模式在“更新的\u列表”中发生了更改

例如:namspace:

ns:Insurance/ns:Policy/ns24:Product/ns24:dpname

existing_list已更新为

ns:Insurance/ns:Policy/ns14:Product/ns14:dpname

在“更新列表”中,即编号从24更改为14

在本例中,我正在寻找一种方法来提取字符串模式,而不包括'ns'值 “更新列表”中的“保险/保单/产品/dpname”

此处“更新列表”中提供了“保险/保单/产品/dpname”模式

如果我从existing_list中搜索不带“ns”的模式,即“保险/保单/产品/dpname”

# ie:
pattern_string = 'Insurance/Policy/Product/dpname'
for element in updated_list:
    result = re.match(pattern_string, element) 

它应返回:

''ns:Insurance/ns:Policy/ns14:Product/ns14:dpname'' # from the 'updated_list'

因为我们正在检查以从updated_list获取更新的ns值

什么是获得此信息的正确方法


Tags: 列表产品policy模式productlistnsinsurance
1条回答
网友
1楼 · 发布于 2024-09-28 16:43:11

@Cloud\u Hari请尝试此解决方案

import re
pattern = r"([\d]+)"
numbers = []
existing_list = ['ns:Insurance/ns:Policy/ns24:Product/ns24:dpname','ns:Insurance/ns:Policy/ns25:Event/ns25:evtname','ns:Insurance/ns:Policy/ns26:Account/ns26:actnum']
updated_list=['ns:Insurance/ns:Policy/ns14:Product/ns14:dpname','ns:Insurance/ns:Policy/ns15:Event/ns15:evtname','ns:Insurance/ns:Policy/ns16:Account/ns16:actnum']

for previous, current in zip(existing_list, updated_list):
    if re.findall(pattern, previous)[0] != re.findall(pattern, current)[0]:
        print("previous list value => ", previous)
        print("Has been updated to => ", current)
        #Feel free to add your logic here

这将使用正则表达式匹配上一个列表中出现的数字,并将其与第二个列表进行比较,如果它们不同,它们将打印出来,您可以在if块中添加逻辑

正则表达式模式=>;([\d+])形成一组匹配的小数

相关问题 更多 >