JeCabrera commited on
Commit
e665408
·
verified ·
1 Parent(s): d6d8e75

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -8
app.py CHANGED
@@ -191,15 +191,54 @@ with col2:
191
  st.session_state.formato
192
  )
193
 
194
- # Limpiar el perfil si contiene datos de formato raw
195
  if isinstance(perfil_cliente, str):
196
- # Eliminar cualquier diccionario o estructura JSON que pueda estar en el texto
197
- if perfil_cliente.strip().startswith('{') and '}' in perfil_cliente:
198
- import re
199
- # Buscar el contenido real después del diccionario
200
- match = re.search(r'}\s*(.*)', perfil_cliente, re.DOTALL)
201
- if match:
202
- perfil_cliente = match.group(1).strip()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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