2012-04-27 10 views
5

Estoy tratando con caracteres de datos Unicode, y me pregunto por qué algunos no tienen ningún nombre en Unicodedata? Aquí hay un código de muestra donde puede consultar el <unknown>Python, nombre de unicodedata y valor de punto de código, ¿qué me falta?

. Creo que todos los caracteres dentro de la base de datos Unicode fueron nombrados, por cierto, hay todos de la misma categoría que es [Cc] Other, Control.

Otra pregunta: ¿cómo puedo obtener el valor del punto de código Unicode? ¿Es ord(unicodechar) que hace el truco?

También puse el archivo here (como la codificación es algo raro), y porque creo que mi corte n 'pegar con carácter' invisible 'puede ser con pérdida.

#!/bin/env python 
# -*- coding: utf-8 -*- 

#extracted and licensing from here: 
""" 
:author: Laurent Pointal <[email protected]> <[email protected]> 
: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  

Respuesta

3

pensé que todos los caracteres dentro de la base de datos Unicode se nombró

No, los caracteres de control no lo hacen tienen nombres, ver UnicodeData archivo

otra pregunta, es ¿cómo puede obtengo el valor del punto de código Unicode? es ORD (unicodechar)

sí!

print '%x' % ord(unicodedata.lookup('LATIN LETTER SMALL CAPITAL Z')) 
## 1d22 
+1

errr, no, es 'ord', no' ORD' –

+1

supe habrá alguien ... – georg

+0

bien, que gracias :) (sí de hecho, he escrito en mayúsculas, pero sabía que no era) – user1340802

2

Según unicodedata biblioteca documentation,

El módulo utiliza los mismos nombres y símbolos definidos por el unicodedata 5.2.0 Formato de archivo (ver here)

su hijo de dos los caracteres muestran la siguiente salida:

1 150 <unknown> Cc 
1 151 <unknown> Cc 

corresponden a los caracteres de control puntos 0x96 y 0x97 La documentación Unicode anterior estipula en the code point paragraph que:

puntos de código sustituta, personajes de uso privado, códigos de control, noncharacters, y los puntos de código no asignados no tienen nombre .

No sé cómo obtener la etiqueta de comentario correspondiente a los comentarios a través de Unicode unicodedata módulo, pero creo que no obtiene ningún nombre para sus dos caracteres de control, ya que se define de esa manera por la norma Unicode .

+0

gracias por su respuesta :) he aceptado el de THG435 porque fue el primero, pero me gustaría aceptar el suyo también. Mejor. – user1340802

Cuestiones relacionadas