Obteniendo dos caracteres de cadena en python

¿Cómo obtener en python desde una cadena no un carácter, sino dos?

Yo tengo:

long_str = 'abcd' for c in long_str: print c 

y me da como

 a b c d 

pero necesito conseguir

 ab cd 

Soy nuevo en Python … ¿hay alguna manera?

 for i, j in zip(long_str[::2], long_str[1::2]): print (i+j) 

o

 import operator for s in map(operator.add, long_str[::2], long_str[1::2]): print (s) 

itertools también proporciona una implementación generalizada de esto:

 def grouper(n, iterable, fillvalue=None): "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx" args = [iter(iterable)] * n return izip_longest(fillvalue=fillvalue, *args) 

Puedes usar notación de corte. long_str[x:y] le dará caracteres en el rango [x, y) (donde se incluye x y y no).

 >>> for i in range(0, len(long_str) - 1, 2): ... print long_str[i:i+2] ... ab cd 

Aquí estoy usando el operador de rango de tres argumentos para indicar inicio, fin y paso (consulte http://docs.python.org/library/functions.html ).

Tenga en cuenta que para una cadena de longitud impar, esto no tomará el último carácter. Si desea el último carácter por sí mismo, cambie el segundo argumento de range a len(long_str) .

También soy nuevo en Python, mira mi código:

 long_str = "abcdefghi" state1=True state2=False state3=True for item in long_str: if state1: print(item,end="") state3=True if state2: print(item) state1=True state2=False state3=False if state3: state1=False state2=True 

Salida:

 ab cd ef gh i