Python - Si un conjunto de letras esta presente en una palabra, esta se agrega a otra lista.

 
Vista:

Si un conjunto de letras esta presente en una palabra, esta se agrega a otra lista.

Publicado por Ana (2 intervenciones) el 12/11/2018 03:17:43
Si tengo una lista de palabras y necesito agregarlas a otra lista sólo si en ellas se encuentran ciertas letras un determinado número de veces, ¿cómo le hago? Todo es en Python. Ejemplo:
Lista que tengo: [casa, cara, caer, cera,cese...]
Letras: [a,s,e,r]
Lista que debo conseguir: [caer, cera]

cara, casa y cese NO se deben de agregar a la listaquedeboconseguir porque tienen dos "a" o dos "e" y en "Letras" la "a" y la "e" solo aparecen UNA vez.

¿Qué código en PYTHON me serviría?

No se imaginan cuanto les agradecería si me pudieran ayudar!!! Es mi proyecto final, me urge demasiado!! Gracias!!!!!
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

Si un conjunto de letras esta presente en una palabra, esta se agrega a otra lista.

Publicado por tincopasan (1082 intervenciones) el 12/11/2018 05:23:16
¿y que has intentado? si es proyecto final esto es fácil, muestra un código y será cuestión de corregir los errores o las omisones que tenga
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

Si un conjunto de letras esta presente en una palabra, esta se agrega a otra lista.

Publicado por Ana (2 intervenciones) el 12/11/2018 15:13:34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import numpy as np
lemario= np.loadtxt("lemario-20101017.txt", dtype=str)
 
p= []
listafinal=[]
 
d=0
 
palabra= input("Inserte las letras conocidas separadas por guiones bajos: ")
palabra=palabra.lower().replace("á","a").replace("é","e").replace("í","i").replace("ó","o").replace("ú","u")
 
n=list(palabra)
 
longitud= len(n)
conjuntopotencia=input("Ingrese el conjunto de letras en el que se encuentran las letras que faltan: ")
k=list(conjuntopotencia)
 
print (n)
guiones=[]
letras=[]
r=[]
numero=0
a=-1
s=0
 
for y in n:
    if y=="_":
        a=a+1
        guiones.append(a)
    else:
        a=a+1
        letras.append(a)
 
#print(guiones)
#print(letras)
 
for x in lemario:
    acentos = (x.replace("á", "a").replace("é", "e"). replace("í", "i"). replace("ó", "o"). replace("ú", "u"))
    cond = True
    if len(x) != longitud:
        cond = False
        continue
 
    for z in letras:
        if n[z]!=acentos[z]:
            cond= False
 
    if cond== True:
        p.append(acentos)
 
for posible in p:
    indicador= True
    for c in guiones:
        if posible[c] not in k:
            indicador= False
 
    if indicador == True:
        listafinal.append(posible)
 
for probable in listafinal:
    f=list(probable)
    señal= True
 
    for carcater in probable:
 
        numero=k.count(k[d])
        cifra=f.count(k[d])
        d=d+1
 
        if cifra > numero:
            señal= False
 
        if d > len(k)-1:
            d=0
 
    if señal == True:
        r.append(probable)
 
print ("p es:", p)
print ("k es:", k)
print(" ")
print("listafinal:", listafinal)
print ("r es:", r)
 
En listafinal se agregan las palabras que tienen las letras sin importar cuantas veces las tengan. En "r" quiero eliminarlas. Gracias!!
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.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Si un conjunto de letras esta presente en una palabra, esta se agrega a otra lista.

Publicado por tincopasan (1082 intervenciones) el 13/11/2018 01:12:53
lamentablemente debo constestar en dos partes, porque la verdad no entiendo la razón de tu código.
para este planteo:
1
2
3
4
5
6
Si tengo una lista de palabras y necesito agregarlas a otra lista sólo si en ellas se encuentran ciertas letras un determinado número de veces, ¿cómo le hago? Todo es en Python. Ejemplo:
Lista que tengo: [casa, cara, caer, cera,cese...]
Letras: [a,s,e,r]
Lista que debo conseguir: [caer, cera]
 
cara, casa y cese NO se deben de agregar a la listaquedeboconseguir porque tienen dos "a" o dos "e" y en "Letras" la "a" y la "e" solo aparecen UNA vez.
posible solución:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#-*- coding: utf -8 -*-
 
lista=["casa","cara","caer","cera","cese"]
letras= input("Inserte las letras conocidas separadas por guiones bajos: ").lower()
letras=letras.split("_")
cuantas={}
posibles=0
 
final=[]
for caracter in letras:
    cuantas[caracter]=letras.count(caracter)
 
for palabra in lista:
    listtemp=[]
    for k in cuantas:
        contador= palabra.count(k)
        if contador < cuantas.get(k):
            posibles=0
            listtemp.append(posibles)
        if contador > cuantas.get(k):
            posibles=2
            listtemp.append(posibles)
        if contador == cuantas.get(k):
            posibles=1
            listtemp.append(posibles)
    if 1 in listtemp and 2 not in listtemp:
        final.append(palabra)
 
print(final)

con respecto a tu código,
1)¿por qué reemplazas los caracteres acentuados?
2)¿es obligatorio que trabajes los "_" de esa forma?
3) supongo que debes leer el archivo usando numpy si así te lo exigen, porque sino no es necesario que así sea
4) estás cometiendo el error de olvidar que la lectura de esa forma es un array
5)
1
2
for x in lemario:
    acentos = (x.replace("á", "a").replace("é", "e"). replace("í", "i"). replace("ó", "o"). replace("ú", "u"))
es imposible que funcione replace no aplica en arrays
6) y otras cosas que como te dije no se que querés hacer.
7)espero que este tonto ejemplo te ayude a completar tu tarea, que por cierto deberías ser capaz de terminar de desarrollar.
Saludos
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