Найти - Пользователи
Полная версия: Склейка нескольких подряд идущих букв
Начало » Python для новичков » Склейка нескольких подряд идущих букв
1 2 3 4
sypper-pit
если в одну строчку всё писать то :)
import re; print "".join([s.center(len(s)+(len(s)>1)*2) for s in line.split()]).replace("  ", " ")
:))) ГГГ
Ed
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()])
pasaranax
Если ровно расставить пробелы (у меня в 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()])
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