* Peter Otten <__pete...@web.de> [2017-03-13 19:57:38 +0100]: > > Toni Fuente via Tutor wrote: > > > Hi, > > > > I've got this script that goes through an httpd conf file, and gets the > > related bits of it for a site, and writes a new config with values that > > I am interested. The problem is that it finds the first chunk and > > returns it, but I need to go to the end of all chunks list, because > > there are also some chunks related to the same site that I need to > > collect (virtualhost *:80 and virtualhost:443). I was > > > > I was thinking in a while loop in the find_chunk function that will go > > through all chunks and return the chunks that site is on, but I don't know > > how to construct it. > > > > Thank you in advance for any suggestion. > > Currently the structure of your script seems to be > > chunks = load_chunks() > for site in get_sites(): > interesting_chunk = find_chunk(site, chunks) > if interesting_chunk is not None: > do_stuff_with(interesting_chunk) > > If I am understanding you correctly you want > > chunks = load_chunks() > for site in get_sites(): > for interesting_chunk in find_chunks(site, chunks): > do_stuff_with(interesting_chunk) > > > One way to make that work was already mentioned, have find_chunks return a > list: > > def find_chunks(site, chunks): > matches = [] > for chunk in chunks: > if any(site in line for line in chunk): > matches.append(chunk) > return matches
I've used the return list solution, that gave me a list of lists with the different chunks, so I needed to convert it into a list of strings before I could use it with the regular expression matching functions: def new_chunk(chunk, user, site): config = [] strings_chunk = list(itertools.chain.from_iterable(chunk)) for item in strings_chunk: if "DocumentRoot" in item: root_dir = item.rsplit('/', 1)[-1] root_dir = root_dir.strip('\n') config.append(re.sub('/home/httpd/vhosts/[a-zA-Z\d-]{,63}(\.[a-zA-Z\d-]{,63})*/[a-zA-Z\d-]{,63}', '/websites/' + user.rstrip() + '/' + site + '/' + root_dir, item)) [...] Thank you all for your help! _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor