LCA commited on
Commit
f8b1038
·
verified ·
1 Parent(s): 9c8e599

Gestion des réponses farfelues

Browse files
Files changed (1) hide show
  1. app.py +15 -11
app.py CHANGED
@@ -67,20 +67,24 @@ def rechercher_article(articleSource):
67
 
68
  def extract_json_from_response(response):
69
  """
70
- Extrait le JSON d'une chaîne de texte contenant potentiellement du texte en vrac.
71
  Retourne un objet Python (dict) ou None si extraction impossible.
72
  """
73
-
74
- # Recherche tous les objets JSON et prend le premier (le plus probable d'être le bon)
75
- matches = re.findall(r'({.*?})', response, re.DOTALL)
76
- if matches:
77
- json_str = matches[0]
78
  try:
79
- return json.loads(json_str)
80
- except Exception as e:
81
- print("Erreur lors du parsing JSON extrait:", e)
82
- return None
83
- else:
 
 
 
 
 
 
84
  print("Aucun JSON trouvé dans la réponse.")
85
  return None
86
 
 
67
 
68
  def extract_json_from_response(response):
69
  """
70
+ Extrait le premier bloc JSON valide d'une chaîne de texte contenant potentiellement du texte en vrac.
71
  Retourne un objet Python (dict) ou None si extraction impossible.
72
  """
73
+ # Recherche tous les blocs JSON potentiels dans la réponse
74
+ json_candidates = re.findall(r'({[\s\S]*?})', response)
75
+ for candidate in json_candidates:
 
 
76
  try:
77
+ return json.loads(candidate)
78
+ except Exception:
79
+ continue
80
+ # Si aucun bloc JSON valide trouvé, essayer de corriger les crochets manquants
81
+ try:
82
+ start = response.index('{')
83
+ end = response.rindex('}') + 1
84
+ json_str = response[start:end]
85
+ return json.loads(json_str)
86
+ except Exception as e:
87
+ print("Erreur lors du parsing JSON extrait:", e)
88
  print("Aucun JSON trouvé dans la réponse.")
89
  return None
90