gpt4 book ai didi

Python utf-8,如何对齐打印出来

转载 作者:太空狗 更新时间:2023-10-29 21:44:43 27 4
gpt4 key购买 nike

我有一个包含日文字符和“正常”的数组。如何对齐这些打印输出?

#!/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)

输出:

する       : 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

谢谢,//弗雷德里克

最佳答案

使用 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))

输出:

する          : dipsy
します : laa-laa
trazan : banarne
した : po
しました : tinky winky

它在某些网络浏览器字体中看起来不正确,但在终端窗口中它们排列正确。

关于Python utf-8,如何对齐打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com