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))