Код:
def разделить_адрес(адрес):
regexp_нп = r'(п\., пос\., пгт|поселок|село|деревня)\s+(\w+)'
regexp_улица = r'улица\s+(\w+)'
regexp_дом = r'дом\s+(\d+)'
regexp_строение = r'(строение|корпус)\s+(\d+)'
# Применим регулярные выражения к адресу
match_нп = re.search(regexp_нп, адрес)
match_улица = re.search(regexp_улица, адрес)
match_дом = re.search(regexp_дом, адрес)
match_строение = re.search(regexp_строение, адрес)
# Извлечем данные из совпадений
if match_нп:
нп = match_нп.group(2)
else:
нп = '-'
if match_улица:
улица = match_улица.group(1)
else:
улица = '-'
if match_дом:
дом = 'дом' + match_дом.group(1)
else:
дом = '-'
if match_строение:
строение = match_строение.group(1) + ' ' + match_строение.group(2)
else:
строение = '-'
# Вернем собранные данные в желаемом формате
return f'{нп}, {улица}, {дом}, {строение}'
адрес = "Тюменская область, Тюменский муниципальный район, Московское муниципальное образование, посёлок Московский, улица Озерная, 2 строение 2, Гараж"
результат = разделить_адрес(адрес)
print(результат)
# Применяем функцию к столбцу с адресами
df['разделить_адрес'] = df.iloc[:, 2].apply(разделить_адрес)
# Создаем новый DataFrame с разделенными адресами
new_df = df['разделить_адрес'].apply(lambda x: pd.Series(x))
# Записываем новый DataFrame в файл
new_file_path = 'D//новый_файл_с_адресами.xlsx'
new_df.to_excel(new_file_path, index=False)