Найти - Пользователи
Полная версия: множественный replace упростить регуляркой
Начало » Python для экспертов » множественный replace упростить регуляркой
1 2
bw
Ага, а еще круче text += ‘,’ :-).

..bw
gmorgunov
Тогда так (дошло тоже через минуту) :)
>>> text="text_1='Вася'"
>>> text=text.replace("я'","я,'")
>>> print text
text_1='Вася,'
bw
Тогда уж (-:
>>> text = "text_1 = 'Вася'"
>>> text = text.replace("я'", "я,'")
>>> exec text
>>> print text_1
Вася,
..bw
-do
всем спасибо! :)

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

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

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

если АПШИПАЮС …. поправьте :))))
-do
Проверил все приведенные примеры … они корректны … но применимы в отношении всего текста или единичной строки
-do
>>> 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,
bw
Можно и без регулярок:
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
-do
BW

Спасибо! … запомнил, записал положил в сундучок :)
ZAN
-do
в итоге нужно получить вышеуказанную строку text_1 в которой присутствует по одному знаку «,» между всеми словами и цифрами (для последующего корректного экспорта в CSV-файл)
Однако, все-таки при помощи регулярки:
>>> import re
>>> print re.sub(r',+', r',', 'abc,,, efg,,, higk')
abc, efg, higk
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB