Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 29, 2014 14:30:02

stahh
Зарегистрирован: 2014-11-21
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с регекспом

Есть строчка вида HappyNewYear, надо разбить по прописным буквам и получить Happy New Year
Весь моск сломал.
Python 2.7.8 (default, Nov 23 2014, 03:19:25)
on linux2
Type “help”, “copyright”, “credits” or “license” for more information.

>>> import re
>>> str_re = 'HappyNewYear'
>>> new_str_re = re.sub(r'([A-Z]{1})', ' \1', str_re)
>>> print new_str_re
 appy ew ear
В тексте это выглядит \x01appy \x01ew \x01ear
Аналогичный вариант на перл работает без проблем
$str = ‘HappyNewYear’;
$str =~ s/({1})/ $1/g;
print $str.“\n”;
$ Happy New Year

Отредактировано stahh (Ноя. 29, 2014 15:00:06)

Офлайн

#2 Ноя. 29, 2014 14:52:48

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Помогите с регекспом

print ' '.join(re.findall('[A-Z][a-z]*', 'HappyNewYear'))

Отредактировано GreyZmeem (Ноя. 29, 2014 14:53:31)

Офлайн

#3 Ноя. 29, 2014 15:06:33

stahh
Зарегистрирован: 2014-11-21
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с регекспом

Спасибо. А сабом почему не работает? Оно ведь заменяется,но на какую-то хрень.

Офлайн

#4 Ноя. 29, 2014 15:45:58

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

Помогите с регекспом

stahh
Весь моск сломал.
скобки потому что у sub 0 не есть все найденное.
потому что r надо ставить для экранировки слеша.
>>> re.sub("([A-Z])",r" \1",'HappyNewYear')
' Happy New Year'
ps
не моск а мозг
перл крут.



Отредактировано doza_and (Ноя. 29, 2014 15:46:25)

Офлайн

#5 Ноя. 30, 2014 02:05:35

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

Помогите с регекспом

>>> import re
>>> 
>>> s = 'HappyNewYear'
>>> 
>>> r = re.sub(r'(?<=.)([A-Z])', r' \1', s)
>>> r
'Happy New Year'
>>>
Без пробела в начале.



Отредактировано py.user.next (Ноя. 30, 2014 02:10:03)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version