Python: Is there a way to split a string of numbers into every third number?

For example, if I have the line a = 123456789876567543, I have a list like ...

123 456 +789 +876 567 543

+6
python list
source share
5 answers
>>> a="123456789" >>> [int(a[i:i+3]) for i in range(0, len(a), 3)] [123, 456, 789] 
+10
source share

The recipe for itertools docs (you can determine the value of fillvalue if the length is not a multiple of 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'] 
+6
source share
 >>> import re >>> a = '123456789876567543' >>> l = re.findall('.{1,3}', a) >>> l ['123', '456', '789', '876', '567', '543'] >>> 
+4
source share
 s = str(123456789876567543) l = [] for i in xrange(0, len(s), 3): l.append(int(s[i:i+3])) print l 
+2
source share

If you want the correct alignment:

 a='123456789876567543' format(int(a),',').split(',') ['123', '456', '789', '876', '567', '543'] a='12345' format(int(a),',').split(',') ['12', '345'] 
0
source share

All Articles