2013-04-18 21 views
5

próbuję drukować znaki Unicode względu na ich nazwę, co następuje:sekwencja ucieczki Python N {nazwa} nie działa zgodnie z definicją

# -*- coding: utf-8 -*- 
print "\N{SOLIDUS}" 
print "\N{BLACK SPADE SUIT}" 

Jednak wyjście otrzymuję nie jest bardzo zachęcające.

Sekwencja specjalna jest drukowana w stanie, w jakim jest.

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on 
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on 
Type "help", "copyright", "credits" or "license" for more information. 
>>> # -*- coding: utf-8 -*- 
... print "\N{SOLIDUS}" 
\N{SOLIDUS} 
>>> print "\N{BLACK SPADE SUIT}" 
\N{BLACK SPADE SUIT} 
>>> 

mogę jednak zauważyć, że another asker udało się to zrobić skutecznie.

Co jest nie tak?

+1

Druga kwestia została przy użyciu Pythona 3, jesteście 2.7. –

Odpowiedz

14

Those sequences only work in unicode strings, który jest jedynym rodzajem napisu w języku Python 3. Tak więc w Pythonie 2 należy poprzedzić literał łańcuchowy numerem u.

>>> print "\N{SOLIDUS} \N{BLACK SPADE SUIT}" 
\N{SOLIDUS} \N{BLACK SPADE SUIT} 
>>> print u"\N{SOLIDUS} \N{BLACK SPADE SUIT}" 
/♠ 

odpowiedniej linii od docs:

\N{name} Charakter nazwie nazwisko w bazie danych Unicode (Unicode tylko)

+0

O, wiodącym u przed ciągiem jest magiczna część. –