Найти - Пользователи
Полная версия: множественный replace упростить регуляркой
Начало » Python для экспертов » множественный replace упростить регуляркой
1 2
-do
есть строка:

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

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

print ','.join(v for v text_1.split(',') if v)
-do
 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» в третьей строке
shiza
print ','.join((v for v in text_1.split(',') if v))
bw
Или так:
while ',,' in text_1:
text_1 = text_1.replace(',,', ',')
..bw
-do
bw
BW

… СПАСИБО! :))))
-do
а каким образом можно добавить одну запятую в конце множества строк?

строку вида:

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

text_1 = "Вася,29.7,задание,оценка,4,"
-do
осенило спустя минуту после вопроса :))))) … может кому-нибудь понадобиться …. такому же начинающему как я :)

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

text_1 = “Вася,29.7,задание,оценка,4”
……………..
patt = re.compile(“\n”)
new_text = patt.sub(',\n', text_1)
……………..
чем плох обычный replace строки? =)
gmorgunov
А зачем усложнять ? :)
>>> text="Вася,29.7,задание,оценка,4"
>>> text=text+","
>>> print text
Вася,29.7,задание,оценка,4,
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