Python: есть ли способ разбить строку чисел на каждое третье число? - PullRequest
6 голосов
/ 10 мая 2010

Например, если у меня есть строка a = 123456789876567543, могу ли я получить список вроде ...

123 456 +789 +876 567 543

Ответы [ 5 ]

10 голосов
/ 10 мая 2010
>>> a="123456789"
>>> [int(a[i:i+3]) for i in range(0, len(a), 3)]
[123, 456, 789]
6 голосов
/ 10 мая 2010

Рецепт из документов itertools (вы можете определить значение заполнения, если длина не кратна 3):

from itertools import izip_longest

def grouper(n, iterable, fillvalue=None):
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

s = '123456789876567543'

print [''.join(l) for l in grouper(3, s, '')]


>>> ['123', '456', '789', '876', '567', '543']
4 голосов
/ 10 мая 2010
>>> import re
>>> a = '123456789876567543'
>>> l = re.findall('.{1,3}', a)
>>> l
['123', '456', '789', '876', '567', '543']
>>> 
2 голосов
/ 10 мая 2010
s = str(123456789876567543)
l = []
for i in xrange(0, len(s), 3):
    l.append(int(s[i:i+3]))
print l
0 голосов
/ 19 июля 2014

Если вы хотите правильное выравнивание:

a='123456789876567543'
format(int(a),',').split(',')
['123', '456', '789', '876', '567', '543']
a='12345'
format(int(a),',').split(',')
['12', '345']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...