Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -191,15 +191,54 @@ with col2:
|
|
191 |
st.session_state.formato
|
192 |
)
|
193 |
|
194 |
-
#
|
195 |
if isinstance(perfil_cliente, str):
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
|
204 |
# Guardar en session_state
|
205 |
st.session_state.perfil_cliente = perfil_cliente
|
|
|
191 |
st.session_state.formato
|
192 |
)
|
193 |
|
194 |
+
# Mejorar la limpieza del perfil para eliminar estructuras JSON/diccionario
|
195 |
if isinstance(perfil_cliente, str):
|
196 |
+
import re
|
197 |
+
import json
|
198 |
+
|
199 |
+
# Intentar detectar y limpiar formato JSON
|
200 |
+
if '{' in perfil_cliente and '}' in perfil_cliente:
|
201 |
+
# Intentar extraer solo el contenido textual, eliminando estructuras JSON
|
202 |
+
# Primero, intentar encontrar el JSON completo
|
203 |
+
json_pattern = r'(\{.*?\})'
|
204 |
+
json_matches = re.findall(json_pattern, perfil_cliente, re.DOTALL)
|
205 |
+
|
206 |
+
if json_matches:
|
207 |
+
for json_match in json_matches:
|
208 |
+
# Intentar extraer el contenido real del JSON
|
209 |
+
try:
|
210 |
+
# Reemplazar el JSON con una cadena vacía
|
211 |
+
perfil_cliente = perfil_cliente.replace(json_match, '')
|
212 |
+
except:
|
213 |
+
pass
|
214 |
+
|
215 |
+
# Limpiar líneas que parecen ser parte de un diccionario
|
216 |
+
lines = perfil_cliente.split('\n')
|
217 |
+
cleaned_lines = []
|
218 |
+
for line in lines:
|
219 |
+
# Omitir líneas que parecen ser claves de diccionario
|
220 |
+
if not re.match(r'^\s*["\']?[a-zA-Z_]+["\']?\s*:', line):
|
221 |
+
cleaned_lines.append(line)
|
222 |
+
|
223 |
+
perfil_cliente = '\n'.join(cleaned_lines)
|
224 |
+
|
225 |
+
# Eliminar llaves sueltas y corchetes
|
226 |
+
perfil_cliente = re.sub(r'[{}[\]]', '', perfil_cliente)
|
227 |
+
|
228 |
+
# Eliminar comillas y dos puntos que parecen ser de un diccionario
|
229 |
+
perfil_cliente = re.sub(r'["\']\s*:\s*["\']', '', perfil_cliente)
|
230 |
+
|
231 |
+
# Eliminar "template", "description", "example" y otras palabras clave comunes en el formato
|
232 |
+
keywords = ["template", "description", "example", "Nivel de conciencia"]
|
233 |
+
for keyword in keywords:
|
234 |
+
perfil_cliente = re.sub(rf'["\']?{keyword}["\']?\s*:\s*["\']?', '', perfil_cliente)
|
235 |
+
|
236 |
+
# Eliminar comillas sueltas
|
237 |
+
perfil_cliente = re.sub(r'^\s*["\']|["\']$', '', perfil_cliente)
|
238 |
+
|
239 |
+
# Eliminar espacios en blanco adicionales
|
240 |
+
perfil_cliente = re.sub(r'\n\s*\n', '\n\n', perfil_cliente)
|
241 |
+
perfil_cliente = perfil_cliente.strip()
|
242 |
|
243 |
# Guardar en session_state
|
244 |
st.session_state.perfil_cliente = perfil_cliente
|