“The system allows for advanced searches based on multiple criteria, including keywords, dates, file type, and author.” “El sistema permite búsquedas avanzadas basadas en múltiples criterios, incluyendo palabras clave, fechas, tipo de archivo y autor. “
Objetivo: frase de print()
, de un texto largo, basado en una frase.
Puedo separar un punto, sentence = sentence.split('.')
.
Código 1:
frase = 'FRASE'
<p>oración = "Foo. Mi oración contiene la FRASE aquí. Bar."
oración = oración.split('.')</p>
<p>print(oración)
```</p>
<strong>Resultado:</strong>
<code>
['Foo', ' Mi oración contiene la FRASE aquí', ' Bar', '']
</code>
Ahora, necesito que esto funcione para cualquier tipo de oración:
<code>. ! ?</code>. Luego extraer el elemento de la lista que contiene <code>frase</code>.
<strong>Código 2:</strong>
</code></pre>
frase = 'FRASE'
oración = "Foo. Mi oración contiene la FRASE aquí. Bar!"
oración = oración.split('.')
oración = [s for s in oración if frase in s]
oración = oración[0]
print(oración)
```
Traceback:
Traceback (most recent call last):
File "/usr/lib/python3.8/py<em>compile.py", line 144, in compile
code = loader.source</em>to<em>code(source</em>bytes, dfile or file,
File "<frozen importlib.<em>bootstrap</em>external>", line 846, in source<em>to</em>code
File "<frozen importlib.<em>bootstrap>", line 219, in _call</em>with<em>frames</em>removed
File "./prog.py", line 16
sentence = lambda sentence : for s in enumerate(sentence): if phrase in s: return s
^
SyntaxError: invalid syntax
<p>During handling of the above exception, another exception occurred:</p>
<p>Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.8/py<em>compile.py", line 150, in compile
raise py</em>exc
py_compile.PyCompileError: File "./prog.py", line 16
sentence = lambda sentence : for s in enumerate(sentence): if phrase in s: return s
^
SyntaxError: invalid syntax
Resultado deseado:
Mi oración contiene la FRASE aquí.
Por favor, háganme saber si hay algo más que pueda añadir al post.
davy.ai
Explicación del Código
El código tiene como objetivo extraer una oración que contenga una frase especificada de un texto más largo. Utiliza el método
split()
para dividir el texto en oraciones individuales basadas en la presencia de puntos (.
). La lista resultante se filtra usando una comprehensión de lista para verificar la presencia de la frase deseada en cada oración. Finalmente, se selecciona e imprime la primera oración que contiene la frase.Problemas con el Código 2
El mensaje de seguimiento indica un error de sintaxis en el código, específicamente en el uso de la función
lambda
. En Python, las funcioneslambda
se utilizan para crear funciones anónimas pequeñas. Se definen con la palabra clavelambda
, seguida de los parámetros de entrada, dos puntos y la expresión a evaluar.Sin embargo, el código intenta utilizar un bucle
for
dentro de la funciónlambda
, lo cual no está permitido. En su lugar, el código debería utilizar una definición de función regular para lograr el resultado deseado.Código Revisado
Este código revisado define una función
encontrar_oracion()
que acepta una lista de oraciones y la frase deseada como entradas. Luego itera a través de cada oración en la lista, verificando la presencia de la frase usando una declaraciónif
. Si encuentra una oración que contiene la frase, devuelve la oración (con espacios en blanco eliminados). Si no se encuentra ninguna oración, devuelveNone
.La función luego se llama con las variables
sentence_list
yphrase
, y se imprime la oración resultante usando la funciónprint()
.Salida