Python - Cambiar verbos a infinitivo de una string

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 21 puestos en Python (en relación al último mes)
Gráfica de Python

Cambiar verbos a infinitivo de una string

Publicado por Antonio (2 intervenciones) el 01/12/2020 17:54:26
Hola, buenas tardes. Quería consultar como hacer una función en python que me permita cambiar todos los verbos de una string a infinitvo.

Por ejemplo:

entra: "Trabajo, Judit canta, vosotros nadáis y ellos bailan"

devuelve: "Trabajar, Judit cantar, vosotros nadar y ellos bailar"

Es decir, cambiar las terminaciones "o", "as", "a", "amos", "áis", "an" por "ar"

Mi codigo es el siguiente:
1
2
3
4
5
6
7
import re
def replace_verbs(texto):
    texto2=texto.replace(",","").split()
    patron=["o", "as", "a", "amos", "áis", "an"]
    reemplazo="ar"
    for i in patron:
        return re.sub(f"{i}$", f"{reemplazo}$", texto)


Y la verdad que ando bastante perdido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Cambiar verbos a infinitivo de una string

Publicado por tincopasan (1082 intervenciones) el 03/12/2020 09:46:40
se ve que ese curso está a full con expresiones regulares!
1) dejo el código funcional, pero está claro que hay un problema, no funcionará bien con palabras que no son verbos, o sea si ponés: auto lo reemplazará por autar, ya que no distingue verbos, solo terminaciones.
2) La verdad que no sé como hacerlo en menos líneas
3) está funcional, fijate las diferencias de código, hay cosas innecesarias y faltan otras en el tuyo
4)esa sintaxis parece la que usé en otro post

1
2
3
4
5
6
7
8
9
10
11
12
#-*- coding: utf - 8 -*-
import re
cadena= "Trabajo, Judit canta, vosotros nadáis y ellos bailan "
 
def cambiar(texto):
    patron=["o", "as", "a", "amos", "áis", "an"]
    for x in patron:
        nueva = re.sub(rf"{x}\b","ar", texto)
        texto = nueva
    return nueva
 
print(cambiar(cadena))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar