亞歷克斯桑頓提到的,使用unicodedata.east_asian_width()
是正確的。然而,它具有以下的返回值:
# East_Asian_Width (ea)
ea ; A ; Ambiguous
ea ; F ; Fullwidth
ea ; H ; Halfwidth
ea ; N ; Neutral
ea ; Na ; Narrow
ea ; W ; Wide
的'W'
,'F'
和'A'
返回值應被視爲在Windows全寬。
參考:http://www.unicode.org/reports/tr44/tr44-4.html#Validation_of_Enumerated
在POSIX平臺上,引號字符(u'「'
和u'」'
)被認爲是曖昧,這實際上在控制檯1個字符寬度。在這裏,您可以嘗試第三方庫urwid代替:
>>> from urwid.util import str_util
>>> str_util.get_width(ord(u'x'))
1
>>> str_util.get_width(ord(u'「'))
1
>>> str_util.get_width(ord(u'你'))
2
我也得到''Na''的狀態,如果該字符不是亞洲。 –
@MarkRansom所有Unicode字符都有東亞寬度。 –
看來我的Python版本(2.7.5)與你的不同。我只是再次檢查:>>> print unicodedata.east_asian_width(u'x') Na' –