#!/usr/bin/env /usr/bin/python3 # -*- coding:utf-8 -*- import hashlib # 企业库唯一性调整,离线数据udf from dw_base.spark.udf.customs.common_clean import clean_company_name escape_mapping = { """: '"', "<": "<", ">": ">", "&": "&", "'": "'" } rus_head = [ 'ООО', 'АО', 'ПАО', 'ЗАО', 'ИП', 'Общество с ограниченной ответственностью', 'Акционерное общество', 'Публичное акционерное общество', 'Закрытое акционерное общество', 'Индивидуальный предприниматель' ] def replace_escape_char(input_str): if not input_str: return None for key, value in escape_mapping.items(): input_str = input_str.replace(key, value) return input_str def generate_md5_hash(input_str: str): input_data = input_str.encode('utf-8') md5_hash = hashlib.md5() md5_hash.update(input_data) return md5_hash.hexdigest() def generate_tid_rus(company_name: str, business_number: str, region: str) -> str or None: if not company_name: return None if business_number: input_str = business_number + 'AAA' else: if region: input_str = f"{company_name}-{region}BBB" else: input_str = company_name + 'CCC' return 'RUS' + generate_md5_hash(input_str) def clean_company_name_extra(s: str) -> str or None: if s: # 去除前缀 for prefix in rus_head: if s.startswith(prefix.upper()): s = s[len(prefix):] break # 去除字符串前后的空格 s = s.strip() return s return None def clean_company_name_rus(company_name: str) -> str or None: if company_name: replace_name = replace_escape_char(company_name) name = clean_company_name(replace_name) if name: name = clean_company_name_extra(name) return name return None region_mapping = { 'Нижегородская область': 'Нижегородская область', 'Тамбовская область': 'Тамбовская область', 'Саратовская область': 'Саратовская область', 'Пермский край': 'Пермский край', 'Кировская область': 'Кировская область', 'Еврейская автономная область': 'Еврейская автономная область', 'Херсонская область': None, 'Красноярский край': 'Красноярский край', 'Тюменская область': 'Тюменская область', 'Липецкая область': 'Липецкая область', 'Коми (Республика)': 'Республика Коми', 'Владимирская область': 'Владимирская область', 'Башкортостан (Республика)': 'Республика Башкортостан', 'Санкт-Петербург': 'Город Санкт-Петербург', 'Калининградская область': 'Калининградская область', 'Бурятия (Республика)': 'Республика Бурятия', 'Амурская область': 'Амурская область', 'Камчатский край': 'Камчатский край', 'Оренбургская область': 'Оренбургская область', 'Севастополь': 'Севастополь', 'Марий Эл (Республика)': 'Республика Марий Эл', 'Астраханская область': 'Астраханская область', 'Алтай (Республика)': 'Республика Алтай', 'Ивановская область': 'Ивановская область', 'Тульская область': 'Тульская область', 'Мурманская область': 'Мурманская область', 'Саха (Республика) (Якутия)': 'Республика Саха (Якутия)', 'Чеченская Республика': 'Чеченская Республика', 'Ленинградская область': 'Ленинградская область', 'Луганская Народная Республика': None, 'Челябинская область': 'Челябинская область', 'Томская область': 'Томская область', 'Мордовия (Республика)': 'Республика Мордовия', 'Кабардино-Балкарская Республика': 'Кабардино-Балкарская Республика', 'Республика Татарстан': 'Республика Татарстан', 'Северная Осетия-Алания (Республика)': 'Республика Северная Осетия-Алания', 'Тверская область': 'Тверская область', 'Ярославская область': 'Ярославская область', 'Иркутская область': 'Иркутская область', 'Орловская область': 'Орловская область', 'Рязанская область': 'Рязанская область', 'Сахалинская область': 'Сахалинская область', 'Волгоградская область': 'Волгоградская область', 'Ставропольский край': 'Ставропольский край', 'Псковская область': 'Псковская область', 'Московская область': 'Московская область', 'Магаданская область': 'Магаданская область', 'Приморский край': 'Приморский край', 'Хакасия (Республика)': 'Республика Хакасия', 'Самарская область': 'Самарская область', 'Карачаево-Черкесская Республика': 'Карачаево-Черкесская Республика', 'Чувашская Республика-Чувашия': 'Чувашская Республика', 'Смоленская область': 'Смоленская область', 'Свердловская область': 'Свердловская область', 'Ингушетия (Республика)': 'Республика Ингушетия', 'Новгородская область': 'Новгородская область', 'Ростовская область': 'Ростовская область', 'Пензенская область': 'Пензенская область', 'Вологодская область': 'Вологодская область', 'Кемеровская область': 'Кемеровская область - Кузбасс', 'Москва': 'Город Москва', 'Курганская область': 'Курганская область', 'Белгородская область': 'Белгородская область', 'Курская область': 'Курская область', 'Архангельская область': 'Архангельская область', 'Ульяновская область': 'Ульяновская область', 'Воронежская область': 'Воронежская область', 'Брянская область': 'Брянская область', 'Донецкая Народная Республика': None, 'Республика Крым': 'Республика Крым', 'Костромская область': 'Костромская область', 'Дагестан (Республика)': 'Республика Дагестан', 'Калужская область': 'Калужская область', 'Запорожская область': None, 'Забайкальский край': 'Забайкальский край', 'Адыгея (Республика) (Адыгея)': 'Республика Адыгея', 'Хабаровский край': 'Хабаровский край', 'Чукотский автономный округ': 'Чукотский автономный округ', 'Краснодарский край': 'Краснодарский край', 'Алтайский край': 'Алтайский край', 'Калмыкия (Республика)': 'Республика Калмыкия', 'Омская область': 'Омская область', 'Новосибирская область': 'Новосибирская область', 'Байконур': 'Байконур', 'Удмуртская Республика': 'Удмуртская Республика', 'Тыва (Республика)': 'Республика Тыва', 'Карелия (Республика)': 'Республика Карелия' } def get_standard_region(region: str) -> str or None: if not region: return None return region_mapping.get(region) if __name__ == '__main__': name = 'Хакасия (Республика)' print(get_standard_region(name)) pass