Имеется строка из X символов, необходимо разбить её на N символов и забить значения по переменным, если в конечном значении отсеченная часть меньше, чем N, то мы её удаляем.
На примере:
Имеется строка London_is_the_capital_of_great_Britain. Её необходимо разбить на группы по 6 символов и каждую группу внести в отдельную строчную переменную (или в массив).
s='London_is_the_capital_of_great_Britain'
[s[x:x+6] for x in range (0, len(s), 6)]
['London', '_is_th', 'e_capi', 'tal_of', '_great', '_Brita', 'in']
Здесь видно, что последняя группа содержит менее 6 символов, значит мы ее не должны заносить в отдельную переменную, а просто отсечь.
Ответ
В itertools-recipes приведен пример реализации функции grouper, которая принимает на вход итерируемый объект и число, обозначающее размер последовательностей, на которые будет разбит исходный объект. В основе функции лежит zip_longest - может быть заменена на встроенный zip (комментарий jfs).
def grouper(iterable, n):
args = [iter(iterable)] * n
return zip(*args)
s = 'London_is_the_capital_of_great_Britain'
l = [''.join(i) for i in grouper(s, 6)]
print(l)
['London', '_is_th', 'e_capi', 'tal_of', '_great', '_Brita']
Комментариев нет:
Отправить комментарий