2017-03-13 3 views
2

drucken Ich dachte, es wäre ordentlich, eine Tabelle von Emoji zu erstellen, die mich interessiert. Erste Spalte wäre der Codepunkt, zweite der Emoji, dritter der Name. Etwas nach dem Vorbild dieser Webseite, aber maßgeschneidert für meinen Gebrauch.In Python 3 wie Unicode Codepunkt als u ' U ...'

Full emoji data

Angenommen, ich herausfinden, wie auf den Codepunkte zu durchlaufen (es gibt noch andere Fragen für das, oder ich eine Liste von Interesse konstruieren), dann werde ich nur zyklisch durch die Codepunkte wie

u_str = u'\U0001F001' 
u_str = u'\U0001F002' 

und drucken (in einer Schleife) (natürlich programmatisch erzeugt):

print(u'\U0001F001', u_str, ' ', unicodedata.name(u_str)) 
print(u'\U0001F002', u_str, ' ', unicodedata.name(u_str)) 

Wenn Unicode-Daten und einige Attribute wie UnicodeData.hex_representation verwendet werden könnten, würde ich das einfach verwenden, aber wenn dieses Attribut in UnicodeData vorhanden ist, verstehe ich die Spezifikation nicht, um sie zu sehen.

So eine Antwort bei der Suche ich diese Frage gefunden:

how-does-one-print-a-unicode-character-code-in-python

Ich versuche:

>>> print(u_str.encode('raw_unicode_escape')) 
b'\\U0001f600' 

was ich suche ist das, was ich in setzen:

u_str = u'\U0001F600' 

Ist dies möglich oder gibt es einen anderen Weg, um die Konstruktion des zu erreichen Tabelle?

Antwort

2

So etwas ähnliches?

>>> for i in range(0x1f001,0x1f005): 
>>>  print('U+{0:04X} \\U{0:08X} {1}'.format(i,chr(i))) 
U+1F001 \U0001F001 
U+1F002 \U0001F002 
U+1F003 \U0001F003 
U+1F004 \U0001F004 
+0

perfekt! Ich habe auch gestimmt, aber es wird nicht aufgenommen, bis mein Ruf über 15 geht. – mcwizard

1
  1. Die ursprüngliche Darstellung ist für immer verschwunden. Der Fall und die Formatierung werden von Python selbst angegeben.

  2. Sie müssen Ihre Bytes zurück in Text decodieren. Versuchen Sie den ascii Codec, denn das wird alles raw_unicode_escape erzeugen.

+0

print (u_str.encode ('ASCII-')) // UnicodeEncodeError: 'ASCII' codec Zeichen nicht kodieren, können '\ U0001f002' in Position 0: ordinal nicht im Bereich (128) ist: grinsendes Gesicht . – mcwizard

+0

Nirgendwo gibt meine Antwort an, dass Sie den Originaltext kodieren müssen. –

+0

Sie haben den Text codiert. Das gibt dir Bytes. Jetzt müssen Sie die Bytes wieder in Text dekodieren. –