Fre*_*ihl 7 python unicode utf-8
我有一个包含日语字符和"正常"的数组.如何对齐这些打印输出?
#!/usr/bin/python
# coding=utf-8
a1=['??', '???', 'trazan', '??', '????']
a2=['dipsy', 'laa-laa', 'banarne', 'po', 'tinky winky']
for i,j in zip(a1,a2):
print i.ljust(12),':',j
print '-'*8
for i,j in zip(a1,a2):
print i,len(i)
print j,len(j)
Run Code Online (Sandbox Code Playgroud)
输出:
?? : dipsy
??? : laa-laa
trazan : banarne
?? : po
???? : tinky winky
--------
?? 6
dipsy 5
??? 9
laa-laa 7
trazan 6
banarne 7
?? 6
po 2
???? 12
tinky winky 11
Run Code Online (Sandbox Code Playgroud)
谢谢,// Fredrik
使用该unicodedata.east_asian_width函数,在计算字符串的长度时跟踪哪些字符是窄的和宽的。
#!/usr/bin/python
# coding=utf-8
import sys
import codecs
import unicodedata
out = codecs.getwriter('utf-8')(sys.stdout)
def width(string):
return sum(1+(unicodedata.east_asian_width(c) in "WF")
for c in string)
a1=[u'??', u'???', u'trazan', u'??', u'????']
a2=[u'dipsy', u'laa-laa', u'banarne', u'po', u'tinky winky']
for i,j in zip(a1,a2):
out.write('%s %s: %s\n' % (i, ' '*(12-width(i)), j))
Run Code Online (Sandbox Code Playgroud)
输出:
?? : dipsy
??? : laa-laa
trazan : banarne
?? : po
???? : tinky winky
Run Code Online (Sandbox Code Playgroud)
它在某些 Web 浏览器字体中看起来不正确,但在终端窗口中它们排列正确。
| 归档时间: |
|
| 查看次数: |
1896 次 |
| 最近记录: |