Spaces:
Sleeping
Sleeping
replace json string cleaning function
Browse files
app.py
CHANGED
@@ -67,15 +67,33 @@ HEADER = """
|
|
67 |
"""
|
68 |
|
69 |
def clean_json_string(json_str):
|
70 |
-
# Replace single quotes with double quotes, but not apostrophes within words
|
71 |
-
json_str = re.sub(r"(?<!\\)'([^']*)'", r'"\1"', json_str)
|
72 |
-
# Add quotes around PASS or FAIL if they're not already quoted
|
73 |
-
json_str = re.sub(r'"SCORE":\s*(PASS|FAIL)', r'"SCORE": "\1"', json_str)
|
74 |
|
75 |
-
# Escape double quotes
|
76 |
-
json_str = re.sub(r'(?<=: ")([^"]*)"([^"]*)"([^"]*)"', lambda m: m.group(1) + m.group(2).replace('"', '\\"') + m.group(3), json_str)
|
77 |
|
78 |
-
return json_str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
|
80 |
def model_call(question, document, answer):
|
81 |
if question == "" or document == "" or answer == "":
|
|
|
67 |
"""
|
68 |
|
69 |
def clean_json_string(json_str):
|
70 |
+
# # Replace single quotes with double quotes, but not apostrophes within words
|
71 |
+
# json_str = re.sub(r"(?<!\\)'([^']*)'", r'"\1"', json_str)
|
72 |
+
# # Add quotes around PASS or FAIL if they're not already quoted
|
73 |
+
# json_str = re.sub(r'"SCORE":\s*(PASS|FAIL)', r'"SCORE": "\1"', json_str)
|
74 |
|
75 |
+
# # Escape double quotes
|
76 |
+
# json_str = re.sub(r'(?<=: ")([^"]*)"([^"]*)"([^"]*)"', lambda m: m.group(1) + m.group(2).replace('"', '\\"') + m.group(3), json_str)
|
77 |
|
78 |
+
# return json_str
|
79 |
+
|
80 |
+
json_str = json_str.replace("'", '"')
|
81 |
+
json_str = re.sub(r'"SCORE":\s*(FAIL|PASS)', r'"SCORE": "\1"', json_str)
|
82 |
+
|
83 |
+
def escape_quotes(match):
|
84 |
+
return match.group(0).replace('"', '\\"')
|
85 |
+
|
86 |
+
pattern = r'"([^"\\]*(?:\\.[^"\\]*)*)"'
|
87 |
+
json_str = re.sub(pattern, lambda m: '"' + escape_quotes(m) + '"', json_str)
|
88 |
+
|
89 |
+
try:
|
90 |
+
parsed_json = json.loads(json_str)
|
91 |
+
return parsed_json
|
92 |
+
except json.JSONDecodeError as e:
|
93 |
+
print(f"Error parsing JSON: {e}")
|
94 |
+
print("Cleaned JSON string:")
|
95 |
+
print(json_str)
|
96 |
+
return None
|
97 |
|
98 |
def model_call(question, document, answer):
|
99 |
if question == "" or document == "" or answer == "":
|