import re, json def find_codes(base_categories, json_data): results = [] # 각 카테고리에 대한 결과를 저장할 리스트 for base_category in base_categories: category_parts = re.split(r'>|-', base_category) base_category1Name, base_category2Name, base_category3Name, base_category4Name = (category_parts + [""] * 4)[:4] for item in json_data: if (item.get('category1Name') == base_category1Name and item.get('category2Name') == base_category2Name and (item.get('category3Name') == base_category3Name or item.get('category3Name') == "") and (item.get('category4Name') == base_category4Name or item.get('category4Name') == "")): results.append((item['Naver_code'], item.get('cat_code'))) # 조건에 맞는 항목을 결과에 추가 break # 해당 카테고리에 대한 첫 번째 매칭 항목을 찾은 후 다음 카테고리로 이동 return results # 모든 검색 결과 반환 def loadJsonData(): json_data = [] try: with open("Percenty_SS_Code.json", "r", encoding='utf-8') as file: for line in file: item = json.loads(line) # 'category3Name'과 'category4Name'의 '$numberDouble':"NaN"을 처리 if isinstance(item.get("category3Name"), dict) and "$numberDouble" in item["category3Name"]: item["category3Name"] = "" # 또는 None 사용 if isinstance(item.get("category4Name"), dict) and "$numberDouble" in item["category4Name"]: item["category4Name"] = "" # 또는 None 사용 json_data.append(item) return json_data except FileNotFoundError: print("Percenty_SS_Code.json 파일을 찾을 수 없습니다.") json_data = [] # 파일이 없을 경우 빈 리스트 할당 return json_data def loadCategories(self): # self.categories = {"category1Name": {}, "category2Name": {}, "category3Name": {}, "category4Name": {}} try: for item in self.json_data: cat1 = item.get("category1Name") cat2 = item.get("category2Name") cat3 = item.get("category3Name", None) cat4 = item.get("category4Name", None) # category3Name과 category4Name 처리 cat3 = item.get("category3Name", None) cat4 = item.get("category4Name", None) if isinstance(cat3, dict) and "$numberDouble" in cat3: cat3 = None # "$numberDouble":"NaN"일 경우 None으로 처리 if isinstance(cat4, dict) and "$numberDouble" in cat4: cat4 = None # "$numberDouble":"NaN"일 경우 None으로 처리 # 계층 구조 구축 if cat1 not in self.categories["category1Name"]: self.categories["category1Name"][cat1] = {"category2Name": {}} if cat2 and cat2 not in self.categories["category1Name"][cat1]["category2Name"]: self.categories["category1Name"][cat1]["category2Name"][cat2] = {"category3Name": {}} if cat3 and cat3 not in self.categories["category1Name"][cat1]["category2Name"][cat2]["category3Name"]: self.categories["category1Name"][cat1]["category2Name"][cat2]["category3Name"][cat3] = {"category4Name": {}} if cat4: self.categories["category1Name"][cat1]["category2Name"][cat2]["category3Name"][cat3]["category4Name"][cat4] = True except Exception as e: print(f"카테고리 로딩 에러 {e}") return print("프로그램 시작") base_category =["가구/인테리어-아웃도어가구-기타아웃도어가구","가구/인테리어-아웃도어가구-야외벤치"] print(f"베이스 카테고리 {base_category}") json_data = loadJsonData() codes = find_codes(base_category, json_data) for code in codes: naver_code, cat_code = code print(f"naver_code : {naver_code}, cat_code : {cat_code}")