我正在处理unicode数据字符,我想知道为什么有些人在unicodedata中没有任何名字?以下是一个示例代码,您可以在其中查看< unknown >
我认为unicode数据库中的每个字符都被命名,BTW所有类别都是[Cc] Other, Control
。
另一个问题:如何获取unicode代码点值?问题是ord(unicodechar)
吗?
我还把文件here(编码是一个奇怪的东西),因为我认为我的'n'粘贴'隐形'字符可能是有损的。
#!/bin/env python
# -*- coding: utf-8 -*-
#extracted and licensing from here:
"""
:author: Laurent Pointal <laurent.pointal@limsi.fr> <laurent.pointal@laposte.net>
:organization: CNRS - LIMSI
:copyright: CNRS - 2004-2009
:license: GNU-GPL Version 3 or greater
:version: $Id$
"""
# Chars alonemarks:
# !?¿;,*¤@°:%|¦/()[]{}<>«»´`¨&~=#±£¥$©®"
# must have spaces around them to make them tokens.
# Notes: they may be in pchar or fchar too, to identify punctuation after
# a fchar.
# \202 is a special ,
# \226 \227 are special -
alonemarks = u"!?¿;,\202*¤@°:%|¦/()[\]{}<>«»´`¨&~=#±\226"+\
u"\227£¥$©®\""
import unicodedata
for x in alonemarks:
unicodename = unicodedata.name(x, '<unknown>')
print "\t".join(map(unicode, (x, len(x), ord(x), unicodename, unicodedata.category(x))))
# unichr(int('fd9b', 16)).encode('utf-8')
# http://stackoverflow.com/questions/867866/convert-unicode-codepoint-to-utf8-hex-in-python
答案 0 :(得分:3)
我认为unicode数据库中的每个字符都被命名为
不,控制字符没有名称,请参阅UnicodeData文件
另一个问题是,我怎样才能获得unicode代码点值?它是ORD(unicodechar)
是!
print '%x' % ord(unicodedata.lookup('LATIN LETTER SMALL CAPITAL Z'))
## 1d22
答案 1 :(得分:2)
根据unicodedata
库documentation,
模块使用与定义相同的名称和符号 UnicodeData文件格式5.2.0(参见here)
您的两个字符显示以下输出:
1 150 <unknown> Cc
1 151 <unknown> Cc
它们对应于控制点字符0x96和0x97 上面的unicode文档在the code point paragraph中规定:
代理代码点,私人使用字符,控制代码, 非字符和未分配的代码点没有名称。
我不知道如何通过unicodedata
模块获取与unicode注释相对应的标签注释,但我认为你的两个控制字符没有任何名称,因为它是通过Unicode定义的常态。