Spaces:
Paused
Paused
| import re | |
| import json | |
| def extract_json(text: str) -> dict: | |
| try: | |
| if isinstance(text, dict) or isinstance(text, list): | |
| return text | |
| filtered_text = "" | |
| filtered_text = re.sub(r'^.*?({|\[)', r'\1', text, flags=re.DOTALL) | |
| filtered_text = re.sub(r'(}|\])(?!.*(\]|\})).*$', r'\1', filtered_text, flags=re.DOTALL) | |
| filtered_text = re.sub("\\'", "'", filtered_text) | |
| filtered_text = re.sub("\\,", ",", filtered_text) | |
| print("Filtered text:", repr(filtered_text)) | |
| try: | |
| parsed = json.loads(filtered_text, strict=False) | |
| except json.JSONDecodeError as e: | |
| print("JSON error:", e) | |
| import ast | |
| try: | |
| parsed = ast.literal_eval(filtered_text) | |
| except Exception as ast_e: | |
| print("AST error:", ast_e) | |
| return {} | |
| return parsed | |
| except Exception as e: | |
| print("Outer error:", e) | |
| return {} | |
| test_str1 = """ | |
| { | |
| "sampling_space_description": "A description of the sampling space.", | |
| "dimensions": [ | |
| { | |
| "name": "age", | |
| "values": [18, 19, 20, 21, 22] | |
| } | |
| ] | |
| } | |
| """ | |
| print("Test 1:", extract_json(test_str1)) | |