Откажитесь от жестко закодированного подхода для более общего подхода.
Я обеспечил начало (логика для квартиры и квартиры).Надеюсь, вам удастся сделать все остальное самостоятельно.
import re
from itertools import product
digits_regex = re.compile('\d+')
address = "Flat 8, The Apartment, King Philip Street, SE1 3WX, England"
def generate(full_address):
def generate_flat(flat_number, prefixes=('f', 'flat')):
flat_options = [str(flat_number)]
for prefix in prefixes:
flat_options.append('{}{}'.format(prefix, flat_number))
flat_options.append('{} {}'.format(prefix, flat_number))
flat_options.append('{}{}'.format(prefix.upper(), flat_number))
flat_options.append('{} {}'.format(prefix.upper(), flat_number))
return flat_options
def generate_apartment(apartment):
prefix, *rest = apartment.split()
joined = ''.join((prefix, *rest))
return [apartment, rest[0], joined, joined.lower(), ' '.join((prefix.lower(), *map(str.lower, rest)))]
flat, apartment, street, area, country = full_address.split(', ')
return [', '.join(variation) for variation in product(generate_flat(digits_regex.findall(flat)[0]), generate_apartment(apartment))]
for variation in generate(address):
print(variation)
Вывод
8, The Apartment
8, Apartment
8, TheApartment
8, theapartment
8, the apartment
f8, The Apartment
f8, Apartment
f8, TheApartment
f8, theapartment
f8, the apartment
f 8, The Apartment
f 8, Apartment
f 8, TheApartment
f 8, theapartment
f 8, the apartment
F8, The Apartment
F8, Apartment
F8, TheApartment
F8, theapartment
F8, the apartment
F 8, The Apartment
F 8, Apartment
F 8, TheApartment
F 8, theapartment
F 8, the apartment
flat8, The Apartment
flat8, Apartment
flat8, TheApartment
flat8, theapartment
flat8, the apartment
flat 8, The Apartment
flat 8, Apartment
flat 8, TheApartment
flat 8, theapartment
flat 8, the apartment
FLAT8, The Apartment
FLAT8, Apartment
FLAT8, TheApartment
FLAT8, theapartment
FLAT8, the apartment
FLAT 8, The Apartment
FLAT 8, Apartment
FLAT 8, TheApartment
FLAT 8, theapartment
FLAT 8, the apartment