2010-05-22 3 views
5

come ottenere in python da string non un carattere, ma due?Ottenere due caratteri da una stringa in python

ho:

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

e mi dà come

a 
b 
c 
d 

ma ho bisogno di ottenere

ab 
cd 

Sono nuovo in python .. c'è qualche modo ?

+0

correlate "Qual è il più‘modo divinatorio’per iterare su una lista in pezzi ?" http://stackoverflow.com/questions/434287/what-is-the-most-pythonic-way-to-iterate-over-a-list-in-chunks – jfs

risposta

6
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 forniscono anche un'implementazione generalizzata di questo:

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

grazie mille :) – Adomas

10

È possibile utilizzare la notazione di sezione. long_str[x:y] ti darà caratteri nell'intervallo [x, y) (dove x è incluso e y non lo è).

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

Qui sto usando il tre argomenti operatore di intervallo per indicare all'inizio, alla fine e passo (vedi http://docs.python.org/library/functions.html).

Si noti che per una stringa di lunghezza dispari, questo non prenderà l'ultimo carattere. Se si desidera l'ultimo carattere da solo, modificare il secondo argomento di range in len(long_str).

+0

grazie mille :) – Adomas

+0

Prego! Contrassegna la risposta come accettata se ritieni che sia la più utile. – danben

+0

Mi sono dimenticato di questo! – juniorRubyist