今天开发了一个wraptext模块,它可以对文本进行折行处理。详情:
说明
本程序用来进行文本的折行处理,支持中文和英文,可以处理Unicode和普通字符串
参数说明
text 待处理的文本,可以是unicode或str
width 处理宽度
encoding 字符串编码,只当text不是unicode时有效
cr 换行符,如果为None则自动从文本中判断,自动设定为找到的第一个换
行符,如果找不到缺省为'\n',如果不为None,则使用设定的换行符
indent 非首行缩近量
firstindent首行缩近量
skipchar 行首忽略字符,如果存在则在处理前会清除每前开始前有skipchar的文本
功能描述
1.支持unicode和非unicode文本,如果为非unicode文本,则会使用encoding指定的编
码对文本转换为unicode,在返回时,会根据原文本是unicode还是非unicode进行转
换并输出。
2.支持段落概念。两个以上连续的回车为段落分隔,其中如果一行只包括空白(空格或
制表符的行)将视为空行。最终的结果段落间只保存一个空行。如果只存在单个换行
则相邻的行视为同一段落。支持'\n', '\r\n', '\r'三种形式的换行符。可以自动
使用文本中的回车符或指定转换后的回车符。
3.自动处理亚洲文字和半角字符,自动处理空白,多个空白(包括制表符)将自动合并
成一个。亚洲文字和英文之间以空格分隔。对于亚洲文字中间的空白自动删除。
4.支持缩近设置,首行缩近和非首行缩近。缩近量可以是数值,则为空格*数值,可以
是字符串。如果firstindent没有设置将缺省为indent的值。
5.可以设置每行行首要忽略的字符,如注释行的'#',在处理时将先删除匹配的行首字
符。
示例
msg = '''中文 中文hello, world'''
wraptext(msg, 10)
现在代码放在 http://code.google.com/p/pyzh 中。原来它已经有一个模块,不过不满足我的要求,于是自已重新写了一个。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=1279041