Сгруппировать строку в 3 с в цикле (Python) - PullRequest
0 голосов
/ 01 марта 2010

У меня есть строка из девяти символов, и мне нужно выполнить операции с группами из трех символов в цикле.

Как бы я достиг этого в Python?

Ответы [ 3 ]

3 голосов
/ 01 марта 2010

Может как то так?

>>> a = "123456789"
>>> for grp in [a[:3], a[3:6], a[6:]]:
    print grp

Конечно, если вам нужно обобщить,

>>> def split3(aString):
        while len(aString) > 0:
                yield aString[:3]
                aString = aString[3:]


>>> for c in split3(a):
        print c
3 голосов
/ 01 марта 2010

Самый простой способ:

>>> s = "123456789"
>>> for group in (s[:3], s[3:6], s[6:]): print group
...
123
456
789

В более общем случае посмотрите на: http://code.activestate.com/recipes/303799-chunks/

2 голосов
/ 01 марта 2010
>>> s = "123456789"
>>> import textwrap
>>> textwrap.wrap(s,3)
['123', '456', '789']

или вы можете использовать itertools

import itertools
def grouper(n, iterable):
    args = [iter(iterable)] * n
    return itertools.izip_longest(*args)

for i in grouper(3,"o my gosh"):
    print i

выход

$ ./python.py
('o', ' ', 'm')
('y', ' ', 'g')
('o', 's', 'h')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...