代码演练_文字竖排

题目

把一段字符串用“右起竖排”的古文格式输出,并以竖线(“|”)符号作为每一列的分隔符。

例如这段文本:

静夜思 
李白
床前明月光
疑是地上霜
举头望明月
低头思故乡

输出结果:

低|举|疑|床|李|静
头|头|是|前|白|夜
思|望|地|明| |思
故|明|上|月| | 
乡|月|霜|光| |

思路

仔细观察文本,我们就可以发现从下往上依次输出每一行的第一个字,然后是第二个字,以此类推就可以得到“右起竖排”的古文格式。 同时,为了对齐,我们需要把短句用中文全角空格补全,如果句中有英文半角空格,也要替换成中文全角空格。

zip()函数将每个集合的同位置的元素组成一个元组,函数用法如下:

zip(...)
    zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]

代码

# coding:utf-8

text = u'''
 静夜思
 李白
 床前明月光
 疑是地上霜
 举头望明月
 低头思故乡
 '''
# 中文全角空格
blank = u'\u3000'
lines = text.splitlines()
# 去掉首尾空白
lines = [x.strip() for x in lines]
# 去掉空元素
lines = [x for x in lines if x]
# 将句中的英文半角空格替换成中文全角空格
lines = [x.replace(' ', blank) for x in lines]
# 反转句子的顺序
lines = list(reversed(lines))

# 补足短句
max_len = max([len(x) for x in lines])
lines = [x+blank*(max_len-len(x)) for x in lines]

for x in zip(*lines):
    print '|'.join(x)

你可能感兴趣的:(代码)