Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 26, 2019 19:03:31

NiOl
Зарегистрирован: 2018-05-07
Сообщения: 19
Репутация: +  1  -
Профиль   Отправить e-mail  

Обработка текстовой строки - вставка пробела через каждые 4 символа.

Сижу уже полчаса, понимаю, что должно быть красивое “питоническое” решение ))) но ничего не приходит в голову.

Итак, есть строка, длина всегда разная, допустим
s1='ABCDEFGHIJKLMNOPQRSTUV'

Хочу получить с пробелами, начиная с конца, через каждые 4 символа, типа:
s2='AB CDEF GHIJ KLMN OPQR STUV'
развернуть строку, взять каждый 4й символ с любой позиции - просто, но соединить неполучается.

Ведь должно быть красивое однострочное решение без медлительных циклов?
(мне их много нужно, почти риалтайм на медленных РС)

Офлайн

#2 Апрель 26, 2019 20:11:00

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Обработка текстовой строки - вставка пробела через каждые 4 символа.

NiOl
почти риалтайм
:) В темпе чтения человеком чтоли?
 >>> re.sub("(.{4})",r"\1 ","aaaaaaaaaaaaaaaaaaaaaaa")
'aaaa aaaa aaaa aaaa aaaa aaa'
NiOl
начиная с конца, через каждые 4 символа,

Это уже крайне противоестественно для REALTIME. Алгоритм будет двухпроходный сначала длину надо определить, потом бить.
Вам точно надо с конца???



Отредактировано doza_and (Апрель 26, 2019 20:19:37)

Офлайн

#3 Апрель 26, 2019 20:34:12

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Обработка текстовой строки - вставка пробела через каждые 4 символа.

 >>> s ='qqqwwweeerrrttt' 
>>> out = []
>>> while s:
    out.append(s[-4:])
    s = s[:-4]
>>> ' '.join(out[::-1])
'qqq wwwe eerr rttt'
>>> 

Офлайн

#4 Апрель 27, 2019 01:42:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Обработка текстовой строки - вставка пробела через каждые 4 символа.

  
>>> 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)

Офлайн

#5 Май 2, 2019 20:59:29

NiOl
Зарегистрирован: 2018-05-07
Сообщения: 19
Репутация: +  1  -
Профиль   Отправить e-mail  

Обработка текстовой строки - вставка пробела через каждые 4 символа.

Всем спасибо, буду курить “re”, надеюсь это стандартный модуль!

Офлайн

#6 Май 3, 2019 01:54:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Обработка текстовой строки - вставка пробела через каждые 4 символа.

NiOl
надеюсь это стандартный модуль
Список модулей стандартной библиотеки
https://docs.python.org/3/library/index.html



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version