Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2008 04:05:49

-do
От:
Зарегистрирован: 2008-10-11
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

множественный replace упростить регуляркой

есть строка:

text_1 = "Вася,,,,,,,29.7,,,,задание,,,,,,оценка,,,,,,,4"
кусок требующего замены кода выглядит так:

text_2 = text_1.replace(",,", ",")
text_3 = text_2.replace(",,", ",")
text_4 = text_3.replace(",,", ",")
....
в итоге нужно получить вышеуказанную строку text_1 в которой присутствует по одному знаку «,» между всеми словами и цифрами (для последующего корректного экспорта в CSV-файл)



Офлайн

#2 Окт. 19, 2008 05:11:47

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

множественный replace упростить регуляркой

Использовать для такого регулярки - это “пять”. Техника, конучно, мощная, но…

print ','.join(v for v text_1.split(',') if v)



Отредактировано (Окт. 19, 2008 06:28:48)

Офлайн

#3 Окт. 19, 2008 05:43:53

-do
От:
Зарегистрирован: 2008-10-11
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

множественный replace упростить регуляркой

 1 >>> import re, string
2 >>> text_1 = "Вася,,,,,,,29.7,,,,задание,,,,,,оценка,,,,,,,4"
3 >>> print ','.join((v for v text_1.split',' if v))
SyntaxError: invalid syntax
>>>
указанное место ошибки «text_1» в третьей строке



Офлайн

#4 Окт. 19, 2008 06:25:20

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

множественный replace упростить регуляркой

print ','.join((v for v in text_1.split(',') if v))



Отредактировано (Окт. 19, 2008 06:25:49)

Офлайн

#5 Окт. 19, 2008 08:44:11

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

множественный replace упростить регуляркой

Или так:

while ',,' in text_1:
text_1 = text_1.replace(',,', ',')
..bw



Офлайн

#6 Окт. 19, 2008 09:03:49

-do
От:
Зарегистрирован: 2008-10-11
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

множественный replace упростить регуляркой

bw
BW

… СПАСИБО! :))))



Офлайн

#7 Окт. 19, 2008 09:45:24

-do
От:
Зарегистрирован: 2008-10-11
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

множественный replace упростить регуляркой

а каким образом можно добавить одну запятую в конце множества строк?

строку вида:

text_1 = "Вася,29.7,задание,оценка,4"
привести к виду:

text_1 = "Вася,29.7,задание,оценка,4,"



Офлайн

#8 Окт. 19, 2008 09:51:49

-do
От:
Зарегистрирован: 2008-10-11
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

множественный replace упростить регуляркой

осенило спустя минуту после вопроса :))))) … может кому-нибудь понадобиться …. такому же начинающему как я :)

text_1 = "Вася,29.7,задание,оценка,4"
.................
patt = re.compile("\n")
new_text = patt.sub(',\n', text_1)
.................



Офлайн

#9 Окт. 19, 2008 12:50:40

nobodyzzz
От:
Зарегистрирован: 2007-06-12
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

множественный replace упростить регуляркой

-do
Код:

text_1 = “Вася,29.7,задание,оценка,4”
……………..
patt = re.compile(“\n”)
new_text = patt.sub(',\n', text_1)
……………..
чем плох обычный replace строки? =)



Офлайн

#10 Окт. 19, 2008 19:07:51

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

множественный replace упростить регуляркой

А зачем усложнять ? :)

>>> text="Вася,29.7,задание,оценка,4"
>>> text=text+","
>>> print text
Вася,29.7,задание,оценка,4,



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version