Разделение строки на список по 3 элемента в Python

207 просмотра
0
0 Комментариев

При написании решении проблемы возникла необходимость данного навыка

string = "abcacbcab"

Нужно разделить эту строку на такой список:

final = ["abc","acb","cab"]

Я пробовал через обнаружение элемента в списке, но если к примеру искать
«bca» то он его выдаст два раза, а мне этого не нужно


Добавить комментарий

2 Answers

Python Опубликовано 09.12.2018
0

Можно регуляркой разделить:

import re
items = re.findall(r'.{3}', "abcacbcab")
print(items)  # ['abc', 'acb', 'cab']

но такая регулярка будет искать только по 3 элемента, если попадется меньше, например, если длина строки не кратна 3, тогда оставшиеся элементы не попадут в результат.


По умолчанию . (точка) в регулярном выражении не ищет переводы на новую строку (\n), чтобы это исправить нужно указывать флаг re.DOTALL:

>>> re.findall(r'.{3}', "ab\ncd\nef\n", flags=re.DOTALL)
['ab\n', 'cd\n', 'ef\n']

Добавить комментарий
0

s = "abcacbcab"
print([s[i:i + 3] for i in range(0, len(s), 3)])
# ["abc","acb","cab"]

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up