es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“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.

Tags:  , , , ,

Answer

  1. Avatar for 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 funciones lambda se utilizan para crear funciones anónimas pequeñas. Se definen con la palabra clave lambda, 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ón lambda, 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

    phrase = 'FRASE'
    sentence = "Foo. Mi oración contiene la FRASE aquí. Bar."
    sentence_list = sentence.split('.')
    
    def encontrar_oracion(lista_texto, frase):
        for s in lista_texto:
            if frase in s:
                return s.strip()
    
    resultado = encontrar_oracion(sentence_list, phrase)
    print(resultado)
    

    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ón if. 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, devuelve None.

    La función luego se llama con las variables sentence_list y phrase, y se imprime la oración resultante usando la función print().

    Salida

    Mi oración contiene la FRASE aquí
    

Comments are closed.