Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 10, 2010 18:58:42

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

если в одну строчку всё писать то :)

import re; print "".join([s.center(len(s)+(len(s)>1)*2) for s in line.split()]).replace("  ", " ")
:))) ГГГ

Офлайн

#2 Янв. 11, 2010 14:58:38

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

sypper-pit: Да, я именно это и имел в виду. Только не к моему коду этот import re; прибавлять нужно, а к коду pasaranax. В моем re не используется.

Итого что у нас получилось в сухом остатке:

1.print "".join([s.center(len(s)+(len(s)>1)*2) for s in line.split()]).replace("  ", " ").strip()
2.import re;print " ".join([w.replace(" ","") for w in re.split(r"(\S{2,})",line) if w.strip()])
или
3.print " ".join([w.replace(" ","") for w in __import__('re').split(r"(\S{2,})",line) if w.strip()])



Отредактировано (Янв. 11, 2010 15:27:52)

Офлайн

#3 Янв. 11, 2010 18:04:58

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Склейка нескольких подряд идущих букв

Если ровно расставить пробелы (у меня в pydev автоматом настроено), то получается вот что:

print "".join(map(lambda w:" %s " % w if len(w) > 1 else w, line.split())).replace("  ", " ").strip()
print "".join([s.center(len(s) + (len(s) > 1) * 2) for s in line.split()]).replace(" ", " ").strip()
import re; print " ".join([w.replace(" ", "") for w in re.split("(\S{2,})", line) if w.strip()])
print " ".join([w.replace(" ", "") for w in __import__("re").split("(\S{2,})", line) if w.strip()])
первые два получаются равны. А если убрать незначимые пробелы, то вот:
print "".join(map(lambda w:" %s "%w if len(w)>1 else w,line.split())).replace("  "," ").strip()
print "".join([s.center(len(s)+(len(s)>1)*2) for s in line.split()]).replace(" "," ").strip()
import re;print " ".join([w.replace(" ","") for w in re.split("(\S{2,})",line) if w.strip()])
print " ".join([w.replace(" ","") for w in __import__("re").split("(\S{2,})",line) if w.strip()])



Отредактировано (Янв. 11, 2010 18:06:18)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version