Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2008 20:23:15

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

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

Ага, а еще круче text += ‘,’ :-).

..bw



Офлайн

#2 Окт. 19, 2008 21:32:16

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

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

Тогда так (дошло тоже через минуту) :)

>>> text="text_1='Вася'"
>>> text=text.replace("я'","я,'")
>>> print text
text_1='Вася,'



Офлайн

#3 Окт. 19, 2008 21:45:47

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

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

Тогда уж (-:

>>> text = "text_1 = 'Вася'"
>>> text = text.replace("я'", "я,'")
>>> exec text
>>> print text_1
Вася,
..bw



Офлайн

#4 Окт. 20, 2008 02:07:24

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

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

всем спасибо! :)

немного оПшиПка вышла из-за некорректно поставленного условия и несогласованности с приведенным примером :)))

имелось ввиду(грубо):

text_1 = '''Вася,29.7,задание,оценка,4\n Маша,30.4,задание,оценка,5\n Петя,15.3,задание,оценка,3\n'''
когда имеется многострочный текст (ЦИТАТА ИЗ УСЛОВИЯ: «в конце множества строк») … тогда нужно, я думаю, явно указать что нужное место это КОНЕЦ КАЖДОЙ СТРОКИ, а не всего ТЕКСТА …

если АПШИПАЮС …. поправьте :))))



Офлайн

#5 Окт. 20, 2008 02:14:58

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

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

Проверил все приведенные примеры … они корректны … но применимы в отношении всего текста или единичной строки



Офлайн

#6 Окт. 20, 2008 02:18:22

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

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

>>> text_1 = '''Вася,29.7,задание,оценка,4\n Маша,30.4,задание,оценка,5\n Петя,15.3,задание,оценка,3\n'''
>>> patt = re.compile("\n")
>>> new_text = patt.sub(',\n', text_1)
>>> print new_text
Вася,29.7,задание,оценка,4,
Маша,30.4,задание,оценка,5,
Петя,15.3,задание,оценка,3,



Офлайн

#7 Окт. 20, 2008 10:21:51

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

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

Можно и без регулярок:

lines = []
for line in text_1.splitlines():
line = line.strip()
if line:
if not line.endswith(','):
line += ','
lines.append(line)

new_text = '\n'.join(lines)
del lines
Пустые строки будут пропущены. В конце каждой строке будет поставлена запятая, если её там не было в исходном варианте. Выхлоп - new_text, lines удаляю из пространства имен, так как предполагаю что этот список тебе больше не нужен, что бы чище было.

p.s. Лидирующие пробелы будут удалены, в отличии от твоего варианта, если это вообще нужно.

..bw



Отредактировано (Окт. 20, 2008 10:24:07)

Офлайн

#8 Окт. 20, 2008 11:02:16

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

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

BW

Спасибо! … запомнил, записал положил в сундучок :)



Офлайн

#9 Окт. 20, 2008 12:13:36

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

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

-do
в итоге нужно получить вышеуказанную строку text_1 в которой присутствует по одному знаку «,» между всеми словами и цифрами (для последующего корректного экспорта в CSV-файл)
Однако, все-таки при помощи регулярки:
>>> import re
>>> print re.sub(r',+', r',', 'abc,,, efg,,, higk')
abc, efg, higk



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version