Форум сайта python.su
1
Сижу уже полчаса, понимаю, что должно быть красивое “питоническое” решение ))) но ничего не приходит в голову.
Итак, есть строка, длина всегда разная, допустим
s1='ABCDEFGHIJKLMNOPQRSTUV'
Хочу получить с пробелами, начиная с конца, через каждые 4 символа, типа:
s2='AB CDEF GHIJ KLMN OPQR STUV'
развернуть строку, взять каждый 4й символ с любой позиции - просто, но соединить неполучается.
Ведь должно быть красивое однострочное решение без медлительных циклов?
(мне их много нужно, почти риалтайм на медленных РС)
Офлайн
253
NiOl:) В темпе чтения человеком чтоли?
почти риалтайм
>>> re.sub("(.{4})",r"\1 ","aaaaaaaaaaaaaaaaaaaaaaa") 'aaaa aaaa aaaa aaaa aaaa aaa'
NiOl
начиная с конца, через каждые 4 символа,
Отредактировано doza_and (Апрель 26, 2019 20:19:37)
Офлайн
>>> s ='qqqwwweeerrrttt' >>> out = [] >>> while s: out.append(s[-4:]) s = s[:-4] >>> ' '.join(out[::-1]) 'qqq wwwe eerr rttt' >>>
Офлайн
857
>>> import re >>> >>> s = 'ABCDEFGHIJKLMNOPQRSTUV' >>> s = re.sub(r'.{4}', r'\g<0> ', s[::-1])[::-1] >>> s 'AB CDEF GHIJ KLMN OPQR STUV' >>>
Отредактировано py.user.next (Апрель 27, 2019 01:48:01)
Офлайн
1
Всем спасибо, буду курить “re”, надеюсь это стандартный модуль!
Офлайн
857
NiOlСписок модулей стандартной библиотеки
надеюсь это стандартный модуль
Офлайн