[英]Aligning Japanese characters in python
我很難在python中對齊日文字符。
碼:
print "{c1}{name:>14s}{c2}{nick_name:>14s}{planes:>16s}".format(
name=name, nick_name=nick_name, planes=planes,
c1=u.color['yellow'], c2=u.color['default']
)
結果:
如果字符串只包含英文和數字,則.format()工作正常,如右圖所示。
遇到日文字符時對齊出錯,如左側所示。
有趣的是,在與{name:>14s}
對齊時:
在這種情況下,它似乎對待1個日本特征= 3個空格。
{name:<14s}
{name:^14s}
{name:>14s}
都有上面提到的行為。
我使用的是OSX 10.10.2,終端字體是摩納哥。
也許這與全寬/半角字符有關。
有沒有像英文字符那樣對齊日文字符?
謝謝。
編輯:
Ignacio Vazquez-Abrams的回答確實是正確的方法。
每個在Python中處理unicode的人都應該閱讀他指出的幻燈片 。
“\\ u3000”是CJK中的全寬空間。 看到這個頁面 。
查看.Format語法也會有所幫助。
我還想推薦這個SO答案 ,這有助於我理解unicode在Python中的工作原理。
但是,如果字符串包含半角和全角字符,則對齊仍然會出錯。 一個簡單的解決方法是使用所有全角字符。
你同時進行了兩次goofup:
首先, 使用unicode
而不是str
。 對於第二種,使用全寬度空格。
>>> print '{:>8s}'.format('ありがとう')
ありがとう
>>> print u'{:>8s}'.format(u'ありがとう')
ありがとう
>>> print u'{:\u3000>8s}'.format(u'ありがとう')
ありがとう
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.