Python - De cadena a lista

 
Vista:
sin imagen de perfil

De cadena a lista

Publicado por jonathan (9 intervenciones) el 13/09/2021 21:57:29
Saludos colegas.
Nuevamente solicito de su ayuda y retroalimentación. Estoy tratando de hacer un código que haga lo mismo que el método split(). No obstante, se me ha dificultado bastante y ya estoy flanqueado.
Este es el código que tengo;
1
2
3
4
5
6
7
8
9
10
11
cad=input("Ingrese una cadena:")
Espacio=chr(32)
Verdad=True
cad_1=[]
 
for k in range(len(cad)):
    print(cad[k] not in Espacio)
    if cad[k] not in Espacio:
        if Verdad == True:
            cad_1.append(cad[Verdad-1:k+1])
print(cad_1)

Le he añadido, le he quitado y nula satisfacción he tenido. Con el código anterior obtengo la siguiente respuesta si le ingreso; América Asia:
1
['A', 'Am', 'Amé', 'Amér', 'Améri', 'Améric', 'América', 'América A', 'América As', 'América Asi', 'América Asia']

No logro separar para obtener [América, Asía] y es por ello que acudo a ustedes para alguna sugerencia u observación, colegas.

mil gracias por la atención prestada
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
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

De cadena a lista

Publicado por Francisco Javier (313 intervenciones) el 14/09/2021 17:02:04
Buenas, me ha gustado mucho tu pregunta de como sustituir el split() y me ha gustado el reto, he conseguido que metiendo un estring por ejemplo
>>>mesa arbol cama gato

out>>>['mesa' , 'arbol' , 'cama' , 'gato']

con este codigo, espero quye sea lo que necesitas:

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
def union(string,x,y):#funcion con tres argumentos, el string y dos posiciones para sacar la palabra e incluirla en la lista
  element=''
  while x<y:
    element+=string[x]
    x+=1
  lista.append(element)
 
def incorpora(string):#funcion donde recorre el strin para ir cortando antes del espacio mostrar las posiciones para que la función incorpora saque la palabra y la registre en la lista. en el primer while repite hasta que no halla espacios en el string de ahí que añadiese un espacio al final y el segundo while es el que manda a la funcion siempre que halla palabra y luego eliminamos la palabra del string.
  space=' '
  while space in string:
    final=len(string)
    indice=0
    inicio=0
    while indice<final:
      for i in string:
        if i==' ':
          indice=string.index(i)
      union(string,inicio, indice)
      string=string[indice+1:final]
      indice=final
 
lista=[]
cad=input("Ingrese una cadena: " )
cad =cad+' '#añadimos un espacio al final del string
incorpora(cad)
print(lista)
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
sin imagen de perfil

De cadena a lista

Publicado por jonathan (9 intervenciones) el 14/09/2021 21:05:40
¿Las variables indice e inicio están para determinar el inicio de una cadena?
perdón
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
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

De cadena a lista

Publicado por Francisco Javier (313 intervenciones) el 14/09/2021 22:24:18
Índice te marca hasta dónde está el espacio e inicio es 0 porque es donde empieza la palabra y como luego borramos la que ponemos en la lista podrías omitir inicio y poner 0 siempre.
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
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

De cadena a lista

Publicado por tincopasan (1082 intervenciones) el 17/09/2021 07:39:50
Veamos:
1) Como dijiste split es un método o función, por lo tanto lo que hagas también debería serlo
2) split tiene como defecto el separador espacio, pero también se puede personalizar el separador, por ejemplo si usas:
como cadena = América;Asia o sea el separador es punto y coma devolverá solo una cadena en la lista = ["América:Asia"] , pero si usas :
split(cadena,";") devolverá dos cadenas en la lista = ["América","Asia"], por lo tanto la función tiene que tener la opción de elegir el separador
3) Si el separador no existe en la cadena, sea espacio u otro debe devolver solo ese elemento completo en la lista
4) hice una función más parecida a split:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def mi_split(cadena,sep=" "):
    palabra ,lista= "",[]
    if sep not in cadena :
        lista.append(cadena)
        return lista
    for x in cadena:
        palabra+=x
        if x ==sep:
            palabra=palabra[:-1]
            lista.append(palabra)
            palabra=""
    lista.append(palabra)
    return lista
 
cad=input("Ingrese una cadena: ")
print(mi_split(cad))

en ese ejemplo el separador es por defecto espacio y sino :
1
print(mi_split(cad,";"))
ahí el separado es ";" punto y coma, pero podría ser cualquier otro, por ejemplo:
print(mi_split(cad,"r"))
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
sin imagen de perfil

De cadena a lista

Publicado por jonathan (9 intervenciones) el 07/10/2021 00:05:43
Colega, gracias y no sabe lo cuanto que me ha ayudado sus intervenciones a mis publicaciones.
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