简体   繁体   中英

How Can I search if a Address Set Contains some specific Words

I am writing a program where I have to check if all address in address-set contains speicific key-Word:

For Example A:

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"

For Example B:

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

set group address "Private-MT" "ABCD45-48/XYCD70-71" add "ABCD47"

set group address "Private-MT" "ABCD45-48/XYCD70-71" add "ABCD48"

set group address "Private-MT" "ABCD45-48/XYCD70-71" add "XYCD70"

set group address "Private-MT" "ABCD45-48/XYCD70-71" add "XYCD71"

in this example, the Address-set name is "ABCD45-48/70-71", so before I delete this address set completely, I need to check that all the members for this address set must have ABCD in there name.

if they all have ABCD in there name delete entire address-set

OUTPUT for A:

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

else delete specific line.

OUTPUT for B:

unset group address "Private-MT" "ABCD45-48/XYCD70-71" add "ABCD47"

unset group address "Private-MT" "ABCD45-48/XYCD70-71" add "ABCD48"

Your question isn't really clear, but I will ask your question in the title. If you have a string and you like to search a sub-string you can only use

if substring in string:
     #do what you want to do

another way is to use regular expression, here the documentations re python

next time please share your script to help everyone to understand your problem ;)

EDIT

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()

Tried with this file

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"

the Output was :

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']

you can edit the script and store infos because I did a print to show you that's works ;)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM