Spaces:
Paused
Paused
File size: 1,216 Bytes
7f4c5ab | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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))
|