usar una separar reemplazar por especiales eliminar contar comparar como caracteres caracter cadenas cadena python string iteration

una - python separar string por caracter



Iterando cada carácter en una cadena usando Python (8)

Aún más fácil:

for c in "test": print c

En C ++, puedo iterar sobre una std::string como esta:

std::string str = "Hello World!"; for (int i = 0; i < str.length(); ++i) { std::cout << str[i] << std::endl; }

¿Cómo itero sobre una cadena en Python?


Bueno, también puedes hacer algo interesante como esto y hacer tu trabajo usando para bucle

#suppose you have variable name name = "Mr.Suryaa" for index in range ( len ( name ) ): print ( name[index] ) #just like c and c++

La respuesta es

Señor . S uryaa

Sin embargo, dado que range () crea una lista de valores que es secuencia, puede usar directamente el nombre

for e in name: print(e)

Esto también produce el mismo resultado y también se ve mejor y funciona con cualquier secuencia como lista, tupla y diccionario.

Hemos utilizado arrastrar funciones incorporadas (BIF en la comunidad Python)

1) range () - range () BIF se usa para crear índices Ejemplo

for i in range ( 5 ) : can produce 0 , 1 , 2 , 3 , 4

2) len () - len () BIF se usa para averiguar la longitud de la cadena dada


Como Johannes señaló,

for c in "string": #do something with c

Puedes iterar casi cualquier cosa en Python usando la construcción for loop ,

por ejemplo, open("file.txt") devuelve un objeto de archivo (y abre el archivo), iterando sobre él itera sobre líneas en ese archivo

with open(filename) as f: for line in f: # do something with line

Si eso parece magia, bueno, lo es, pero la idea que hay detrás es realmente simple.

Hay un protocolo de iterador simple que se puede aplicar a cualquier tipo de objeto para hacer que el bucle for funcione en él.

Simplemente implemente un iterador que defina un método next() , e implemente un método __iter__ en una clase para hacerlo iterable. (el __iter__ por supuesto, debe devolver un objeto iterador, es decir, un objeto que define next() )

Ver documentación oficial.


Puede usar literales de cadena con formato ( PEP498 ; Pyton 3.6+) con print y secuencia de desempaquetado y enumerate :

print(*(f''{idx} {char}'' for idx, char in enumerate(''Hello!'')), sep=''/n'') 0 H 1 e 2 l 3 l 4 o 5 !

Si los valores de tuple impresión son suficientes, no hay necesidad de la expresión del generador:

print(*enumerate(''Hello!''), sep=''/n'') (0, ''H'') (1, ''e'') (2, ''l'') (3, ''l'') (4, ''o'') (5, ''!'')


Si desea utilizar un enfoque más funcional para iterar sobre una cadena (tal vez para transformarla de alguna manera), puede dividir la cadena en caracteres, aplicar una función a cada una y luego unir la lista resultante de caracteres en una cadena.

Una cadena es inherentemente una lista de caracteres, por lo tanto, ''map'' se repetirá sobre la cadena, como segundo argumento, aplicando la función, el primer argumento, a cada una.

Por ejemplo, aquí utilizo un enfoque lambda simple, ya que todo lo que quiero hacer es una modificación trivial del carácter: aquí, para incrementar el valor de cada carácter:

>>> ''''.join(map(lambda x: chr(ord(x)+1), "HAL")) ''IBM''

o más generalmente:

>>> ''''.join(map(my_function, my_string))

donde my_function toma un valor char y devuelve un valor char.


Si necesita acceder al índice a medida que recorre la cadena, use enumerate() :

>>> for i, c in enumerate(''test''): ... print i, c ... 0 t 1 e 2 s 3 t


Solo para hacer una respuesta más completa, la forma en C de iterar sobre una cadena puede aplicarse en Python, si realmente quieres forzar una clavija cuadrada en un agujero redondo.

i = 0 while i < len(str): print str[i] i += 1

Pero, de nuevo, ¿por qué hacer eso cuando las cadenas son inherentemente iterables?

for i in str: print i


Varias respuestas aquí usan range . xrange es mejor ya que devuelve un generador, en lugar de una lista completamente instanciada. Donde la memoria y / o los iterables de diferentes longitudes pueden ser un problema, xrange es superior.