Python 如果地址集包含某些特定的单词,如何进行搜索

Python 如果地址集包含某些特定的单词,如何进行搜索,python,python-2.7,Python,Python 2.7,我正在编写一个程序,我必须检查地址集中的所有地址是否都包含特定的关键字: 例如A: 设置组地址“专用MT”“ABCD45-48/70-71” 设置组地址“专用MT”“ABCD45-48/70-71”添加“ABCD47” 设置组地址“专用MT”“ABCD45-48/70-71”添加“ABCD48” 设置组地址“专用MT”“ABCD45-48/70-71”添加“ABCD70” 设置组地址“专用MT”“ABCD45-48/70-71”添加“ABCD71” 例如B: 设置组地址“专用MT”“ABCD45

我正在编写一个程序,我必须检查地址集中的所有地址是否都包含特定的关键字:

例如A:

设置组地址“专用MT”“ABCD45-48/70-71”

设置组地址“专用MT”“ABCD45-48/70-71”添加“ABCD47”

设置组地址“专用MT”“ABCD45-48/70-71”添加“ABCD48”

设置组地址“专用MT”“ABCD45-48/70-71”添加“ABCD70”

设置组地址“专用MT”“ABCD45-48/70-71”添加“ABCD71”

例如B:

设置组地址“专用MT”“ABCD45-48/XYCD70-71”

设置组地址“专用MT”“ABCD45-48/XYCD70-71”添加“ABCD47”

设置组地址“专用MT”“ABCD45-48/XYCD70-71”添加“ABCD48”

设置组地址“专用MT”“ABCD45-48/XYCD70-71”添加“XYCD70”

设置组地址“专用MT”“ABCD45-48/XYCD70-71”添加“XYCD71”

在本例中,地址集名称为“ABCD45-48/70-71”,因此在我完全删除此地址集之前,我需要检查此地址集的所有成员的名称中是否都必须包含ABCD

如果它们的名称中都有ABCD,则删除整个地址集

A的输出:

未设置组地址“专用MT”“ABCD45-48/70-71”

否则删除特定行

B的输出:

未设置组地址“专用MT”“ABCD45-48/XYCD70-71”添加“ABCD47”

未设置组地址“专用MT”“ABCD45-48/XYCD70-71”添加“ABCD48”


你的问题不是很清楚,但我会在标题中问你的问题。如果您有一个字符串,并且希望搜索子字符串,则只能使用

if substring in string:
     #do what you want to do
另一种方法是使用正则表达式,这里是文档

下次请分享您的脚本,帮助大家理解您的问题;)

编辑

filename = "test.text"
import re
def splitAddresses(data):
    addresses=[]
    l=[]
    pattern=re.compile("^[GROUP]+[0-9]+[:]$")
    for element in data:
        isAmatch=pattern.match(element)
        if isAmatch==None:
            l.append(element)
        else:
            addresses.append(l)
            l=[]
    addresses.append(l)
    return(addresses[1:])
def parseAddress():
    with open(filename) as f:
        data = f.readlines()
    addresses=splitAddresses(data)
    for element in addresses:
        prefix=element[0][32:36]
        length_data=len(element)
        for address in element[1:]:
            if address.count(prefix)!=2:
                element.remove(address)
        new_length = len(element)
        if new_length==length_data:
            print(element[0])
        else:
            print(element[1:])
parseAddress()
尝试使用此文件

GROUP1:
set group address "Private-MT" "ABCD45-48/70-71"
set group address "Private-MT" "ABCD45-48/70-71" add "ABCD47"
set group address "Private-MT" "ABCD45-48/70-71" add "ABCD48"
set group address "Private-MT" "ABCD45-48/70-71" add "ABCD70"
set group address "Private-MT" "ABCD45-48/70-71" add "ABCD71"
GROUP2:
set group address "Private-MT" "ABCD45-48/70-71"
set group address "Private-MT" "ABCD45-48/70-71" add "ABCD47"
set group address "Private-MT" "ABCD45-48/70-71" add "ABCD48"
set group address "Private-MT" "ABCD45-48/70-71" add "XYCD70"
set group address "Private-MT" "ABCD45-48/70-71" add "XYCD71"
结果是:

set group address "Private-MT" "ABCD45-48/70-71"

['set group address "Private-MT" "ABCD45-48/70-71" add "ABCD47"\n', 'set group address "Private-MT" "ABCD45-48/70-71" add "ABCD48"\n']

您可以编辑脚本并存储信息,因为我打印了一张照片,向您展示了它的工作原理;)

谢谢你的更新,我正在开发一个自动化工具来检查防火墙上的配置。在防火墙中,我们创建具有多个对象的组。所以我正在寻找一个代码,在这里我可以把组名作为参考,并检查是否所有组成员的名称中都有一个特定的单词(4个字符)。如果所有组成员都有该单词,我将删除整个组,否则我将删除名称中有该特定单词(4个字符)的特定成员您的输入是什么?是文本文件吗?json文件?还是只是日志?如果不知道输入的格式,就很难给出解决方案。我的建议是分享你的输入和你想做的事情的截图。因此,请更新您的问题,您将得到帮助,而不是因为太宽泛而暂停;)我已经在一个文本文件中进行了备份,并使用文本文件作为参考来创建配置文件。那么您的示例a是一个文本文件,示例B是另一个文本文件?我将更新我的答案;)非常感谢,这是我需要的。我将在我的代码中尝试它,并共享结果。这些地址存储在哪里..在数据帧或列表中,还是在文本文件中?我已在文本文件中进行备份,并使用文本文件作为参考来创建configGeneral算法。1.阅读文本文件2。使用循环3逐行阅读。将每行拆分为“”4。如果您有“ABCD”,则进行比较以获取