Python - Ayuda expresiones regulares

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

Ayuda expresiones regulares

Publicado por Candela (8 intervenciones) el 30/11/2020 22:19:15
Buenas! Empezando con el tema de expresiones regulares, me he topado con un ejercicio que no consigo imaginarme como abordarlo. Es el siguiente:
Desarrollar una funcion que me encuentre todos los verbos del presente de indicativo de los verbos regulares de la primera conjugación ( "o", "as", "a", "amos", "áis", "an"), de un texto y ponerlo en una lista.

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

devuelve: ['Trabajo', 'canta', 'nadáis', 'bailan']

Se que de alguna manera debo utilizar la función findall, pero no se como crear un patrón con varias terminaciones, por ejemplo de forma individual un patrón sería asi:

pattern = '^r..o$' #define un patrón para una string de cuatro letras, empezando por la letra r (^r), terminando por la letra o (o$) y con dos letras cualquiera en medio

Agradecería cualquier tipo de explicación o ayuda si no es mucha molestia.
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.272
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda expresiones regulares

Publicado por tincopasan (622 intervenciones) el 30/11/2020 23:39:00
podrías poner algo de código que hayas intentado, pero no creo que con findall sea lo más apropiado, de una forma simple lo haría con match y el método $
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 11 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda expresiones regulares

Publicado por Candela (8 intervenciones) el 01/12/2020 00:07:33
Mi problema es que no se como crear un patrón de multiple opción, solo de una opción (como comentaba antes), por lo que no se como abordar el ejercicio.

Esto es lo único que se me ocurre, pero me devuelve una lista vacía
1
2
3
4
import re
def verbs(texto):
    patron= 'as$' or 'o$' or 'a$' or 'amos$' or 'áis$' or 'an$'
    return re.findall(patron, texto)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.272
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda expresiones regulares

Publicado por tincopasan (622 intervenciones) el 01/12/2020 04:15:07
lo encararía de esta forma:
1
2
3
4
5
6
7
8
9
10
11
12
13
import re
patron=["o", "as", "a", "amos", "áis", "an"]
cadena= "Trabajo, Judit canta, vosotros nadáis y ellos bailan ".replace(",","").split()
 
for elemento in cadena:
    for x in patron:
        if re.findall(f"{x}$",elemento):
            print(elemento)
 
# o en todo caso con comprensión de listas
 
devuelve = [elemento for elemento in cadena for x in patron if re.findall(f"{x}$",elemento)]
print(devuelve)

vos crea la función para terminarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 11 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda expresiones regulares

Publicado por Candela (8 intervenciones) el 01/12/2020 10:31:33
Perdone, ¿no le importaría explicarme por que utiliza una f-string?, es que es la única parte que no consigo entender del código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.272
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda expresiones regulares

Publicado por tincopasan (622 intervenciones) el 01/12/2020 15:36:40
a partir de la versión 3.6 es la nueva sintaxis que se puede usar para formatear cadenas, es un equivalente a:


1
2
3
4
5
nombre = "tincopasan"
 
print("hola %s"%nombre) #desde python 2.x
print("hola {}".format(nombre)) #antes de 3.6
print(f"hola {nombre}") #a partir de 3.6
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