全角半角を加味したセンタリング、左寄せ、右寄せ
Unicode の East Asian Width を考慮した center, ljust, rjust の Python スクリプト。slen で全角を2文字分と数えた文字数も取れます。
'''The East Asia character width was considered. len, ljust, rjust, center.''' import unicodedata
def slen(s, ambiguous=True):
'''The length of the character string by the East Asia character width''' if ambiguous: # 文脈依存の文字(ギリシャ文字、ロシア文字等)を全角に扱うか w = 'W', 'F', 'A' else:
w = 'W', 'F' return sum((unicodedata.east_asian_width(x) in w) + 1 for x in s)
def _s(s, width, ambiguous):
return max(width - slen(s, ambiguous), 0)
def ljust(s, width, fillchar=' ', ambiguous=True):
return s + fillchar * _s(s, width, ambiguous)
def rjust(s, width, fillchar=' ', ambiguous=True):
return fillchar * _s(s, width, ambiguous) + s
def center(s, width, fillchar=' ', ambiguous=True):
space = _s(s, width, ambiguous)
r = space // 2
L = space - r
return fillchar * L + s + fillchar * r
if __name__ == "__main__":
for i in (u'hoge,ほげ,Объект,독도,饺子,±,␣,' u'\N{IDEOGRAPHIC SPACE},' u'\N{ZERO WIDTH NO-BREAK SPACE}').split(','):
for a in False, True:
print center(i, 9, '*', ambiguous=a),
print clen(i, ambiguous=a), i
# 好きに流用してください
« texteditor.pyw 一応完成? | トップページ | Independence Day »
「Python」カテゴリの記事
- from __future__ import hatsune(2008.09.15)
- Pygame1.8.1出たよ!(2008.08.02)
- それは kokoro.py と言うプログラム(2008.04.27)
- smf2txt.py ‐ SMF をテキストに(2008.04.09)
- 2007年下半期ライトノベルサイト杯結果と、同じのに投票した方々(2008.01.28)