Если ровно расставить пробелы (у меня в 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()])