Using Python 3.6
I have an f-string in main that looks like
title =f'Backup errors in {folder} on {host} at {datetime.datetime.today()}'
used in the following function call send_mail(title, message, to, from)
I am not allowed to change the function call.
The question is, inside send_email can I extract the folder, and host variables from the f-string?
I would normally try something like:
extracted_folder = title.split()[17:30]
but folder and host are both going to be variable length.
Advertisement
Answer
you can do a combination of split and slice like this :
title = 'Backup errors in folder 1234 on host1234 at today1234'
folder = title[17:].split(' on ')[-2]
host = title[17:].split(' on ')[-1].split(' at ')[0]
print(folder)
print(host)
output :
folder 1234 host1234
I also work with spaces and with ” on ” in the folder name if you do an other trick :
title = 'Backup errors in folder on 1234 on host1234 at today1234'
folder = " on ".join(title[17:].split(' on ')[:-1])
host = title[17:].split(' on ')[-1].split(' at ')[0]
print(folder)
print(host)
output :
folder on 1234 host1234
