import re, json import logging # 로거 인스턴스 가져오기 logger = logging.getLogger('default_logger') def find_naver_code_ori(base_category): logger.debug("네이버 카테고리 코드 찾기") logger.debug(f"주어진 카테고리 : {base_category}") category_parts = re.split(r'>|-', base_category) logger.debug(f"카테고리 분리 : {category_parts}") base_category1Name, base_category2Name, base_category3Name, base_category4Name = (category_parts + [None]*4)[:4] with open("Percenty_SS_code.json", "r", encoding='utf-8') as file: for line in file: try: item = json.loads(line) if (item.get('category1Name') == base_category1Name and item.get('category2Name') == base_category2Name and item.get('category3Name') == base_category3Name and item.get('category4Name') == base_category4Name): logger.debug(f"찾은 카테고리 코드 : {item['Naver_code']}") print(f"찾은 카테고리 코드 : {item['Naver_code']}") return item['Naver_code'] # 조건에 맞는 첫 번째 코드를 반환하고 함수 종료 except json.JSONDecodeError as e: logger.debug(f"Error decoding JSON: {e}", exc_info=True) continue return None # 조건에 맞는 코드를 찾지 못한 경우 def find_naver_code(base_category, json_naver_codes): logger.debug("네이버 카테고리 코드 찾기") logger.debug(f"주어진 카테고리 : {base_category}") try: category_parts = re.split(r'>|-', base_category) logger.debug(f"카테고리 분리 : {category_parts}") base_category1Name, base_category2Name, base_category3Name, base_category4Name = (category_parts + [None]*4)[:4] for item in json_naver_codes: try: # category3Name과 category4Name가 없거나 NaN인 경우를 처리합니다. category3Name_item = item.get('category3Name') if isinstance(category3Name_item, dict) and '$numberDouble' in category3Name_item: category3Name_item = None # NaN 값 처리 category4Name_item = item.get('category4Name') if isinstance(category4Name_item, dict) and '$numberDouble' in category4Name_item: category4Name_item = None # NaN 값 처리 # 조건에 따라 검색합니다. if (item.get('category1Name') == base_category1Name and item.get('category2Name') == base_category2Name and (category3Name_item == base_category3Name or base_category3Name is None) and (category4Name_item == base_category4Name or base_category4Name is None)): logger.debug(f"찾은 카테고리 코드 : {item['Naver_code']}") return item['Naver_code'] # 조건에 맞는 첫 번째 코드를 반환하고 함수 종료 except Exception as e: logger.error(f"Error processing item: {e}", exc_info=True) continue return None # 조건에 맞는 코드를 찾지 못한 경우 except Exception as e: logger.error(f"find_naver_code 함수 실행 중 에러 발생 : {e}", exc_info=True)