Страницы

Поиск по вопросам

четверг, 25 апреля 2019 г.

Разбить строку на N символов (подстрок одинаковой длины) и занести в массив

Имеется строка из 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']

Комментариев нет:

Отправить комментарий