我想使用 Python 检查一个字符是全角还是半角
string="你好hallo"
for char in string:
if( \uFF60- \u0f01 and \uFFE0-\uFFE6 ): print( char +"is fullwidth")
elif(\uFF61-\uFFDC and \uFFE8-\uFFEE):print(char+ " is halfwidth")
请帮我把这段伪代码改成真正的python代码。
最佳答案
正如 Alex Thornton 提到的,使用 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
关于python - 在 Python 中检查一个字符是全角还是半角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23058564/