Обработка ошибок, показаны проблемные записи
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
CHEVROLET Tacuma 1.6 [A16DMS] 09.2000- DAEWOO Rezzo/Tacuma 1.6 [A16DMS] 09.2000- \n DAEWOO Espero 1.5 16V [A15MF] 02.1995-
|
||||
HYUNDAI Accent 1.3 [G4E-A] 08.1999- рандомный \n text HYUNDAI Accent 1.3 [G4EH] 08.2002- вфы вфы HYUNDAI Accent 1.4 GL 11.2005-
|
||||
HYUNDAI Accent 1.5 [G4EB] 08.2002-
|
||||
HYUNDAI Accent 1.6
|
||||
@@ -43,13 +43,17 @@ def prepare_records(content: str) -> list[str]:
|
||||
return [r.strip() for r in content.split(RECORD_DELIMITERS[0]) if r.strip()]
|
||||
|
||||
|
||||
def _normalize_obj(obj: dict) -> dict:
|
||||
return {
|
||||
def _normalize_obj(obj: dict, original: str) -> dict:
|
||||
result = {
|
||||
"brand": obj.get("brand", ""),
|
||||
"model": obj.get("model", ""),
|
||||
"engine_code": obj.get("engine_code", ""),
|
||||
"date_range": obj.get("date_range", ""),
|
||||
}
|
||||
if not result["engine_code"].strip():
|
||||
result["has_error"] = True
|
||||
result["original"] = original.replace("\t", " ")
|
||||
return result
|
||||
|
||||
|
||||
def extract_record(client: Client, record: str) -> list[dict]:
|
||||
@@ -71,19 +75,19 @@ def extract_record(client: Client, record: str) -> list[dict]:
|
||||
result = result.strip()[4:].strip()
|
||||
parsed = json.loads(result)
|
||||
if isinstance(parsed, list):
|
||||
return [_normalize_obj(o) for o in parsed]
|
||||
return [_normalize_obj(parsed)]
|
||||
return [_normalize_obj(o, record) for o in parsed]
|
||||
return [_normalize_obj(parsed, record)]
|
||||
except (json.JSONDecodeError, KeyError):
|
||||
if attempt < RETRY_COUNT:
|
||||
time.sleep(RETRY_DELAY)
|
||||
else:
|
||||
return [{"brand": "", "model": "", "engine_code": "", "date_range": record}]
|
||||
return [{"brand": "", "model": "", "engine_code": "", "date_range": record, "has_error": True, "original": record.replace("\t", " ")}]
|
||||
except Exception:
|
||||
if attempt < RETRY_COUNT:
|
||||
time.sleep(RETRY_DELAY)
|
||||
else:
|
||||
raise
|
||||
return [{"brand": "", "model": "", "engine_code": "", "date_range": record}]
|
||||
return [{"brand": "", "model": "", "engine_code": "", "date_range": record, "has_error": True, "original": record.replace("\t", " ")}]
|
||||
|
||||
|
||||
def process_file(client: Client, filepath: pathlib.Path) -> bool:
|
||||
|
||||
@@ -1 +1,54 @@
|
||||
[]
|
||||
[
|
||||
{
|
||||
"brand": "CHEVROLET",
|
||||
"model": "Tacuma 1.6",
|
||||
"engine_code": "[A16DMS]",
|
||||
"date_range": "09.2000-"
|
||||
},
|
||||
{
|
||||
"brand": "DAEWOO",
|
||||
"model": "Rezzo/Tacuma 1.6",
|
||||
"engine_code": "[A16DMS]",
|
||||
"date_range": "09.2000-"
|
||||
},
|
||||
{
|
||||
"brand": "DAEWOO",
|
||||
"model": "Espero 1.5 16V",
|
||||
"engine_code": "[A15MF]",
|
||||
"date_range": "02.1995-"
|
||||
},
|
||||
{
|
||||
"brand": "HYUNDAI",
|
||||
"model": "Accent 1.3",
|
||||
"engine_code": "[G4E-A]",
|
||||
"date_range": "08.1999- рандомный"
|
||||
},
|
||||
{
|
||||
"brand": "HYUNDAI",
|
||||
"model": "Accent 1.3",
|
||||
"engine_code": "[G4EH]",
|
||||
"date_range": "08.2002-"
|
||||
},
|
||||
{
|
||||
"brand": "HYUNDAI",
|
||||
"model": "Accent 1.4 GL",
|
||||
"engine_code": "",
|
||||
"date_range": "11.2005-",
|
||||
"has_error": true,
|
||||
"original": "HYUNDAI Accent 1.3 [G4E-A] 08.1999- рандомный \\n text HYUNDAI Accent 1.3 [G4EH] 08.2002- вфы вфы HYUNDAI Accent 1.4 GL 11.2005-"
|
||||
},
|
||||
{
|
||||
"brand": "HYUNDAI",
|
||||
"model": "Accent 1.5",
|
||||
"engine_code": "[G4EB]",
|
||||
"date_range": "08.2002-"
|
||||
},
|
||||
{
|
||||
"brand": "HYUNDAI",
|
||||
"model": "Accent",
|
||||
"engine_code": "",
|
||||
"date_range": "",
|
||||
"has_error": true,
|
||||
"original": "HYUNDAI Accent 1.6"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user