2010-05-22 9 views
5

comment obtenir en Python de chaîne pas un caractère, mais deux?Obtenir deux caractères de la chaîne en python

Je:

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

et il me donne comme

a 
b 
c 
d 

mais je dois obtenir

ab 
cd 

Je suis nouveau en python .. est-il possible ?

+0

liés « Quel est le plus « pythonique » moyen d'itérer sur une liste en morceaux ? " http://stackoverflow.com/questions/434287/what-is-the-most-pythonic-way-to-iterate-over-a-list-in-chunks – jfs

Répondre

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

ou

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

itertools fournissent également une mise en œuvre généralisée de ceci:

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

merci beaucoup :) – Adomas

10

Vous pouvez utiliser la notation de tranche. long_str[x:y] vous donnera des caractères dans la plage [x, y) (où x est inclus et y ne l'est pas).

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

J'utilise ici l'opérateur de gamme à trois arguments pour désigner début, la fin et l'étape (voir http://docs.python.org/library/functions.html). Notez que pour une chaîne de longueur impaire, le dernier caractère ne sera pas pris en compte. Si vous voulez le dernier caractère, changez le deuxième argument de range en len(long_str).

+0

merci beaucoup :) – Adomas

+0

De rien! Veuillez marquer la réponse comme acceptée si vous l'avez trouvée la plus utile. – danben

+0

J'ai oublié ça! – juniorRubyist

Questions connexes