1
0
Fork 0
AutoPercenty2/edit/naver_code.py

62 lines
3.3 KiB
Python

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)