2013-02-27 44 views
9

W programie napisanym w języku Python muszę wydrukować symbol © (prawa autorskie). Czy istnieje prosty sposób na zrobienie tego? Czy też nie jest obsługiwane w Pythonie? Oto przykład.Jak wyświetlać znaki specjalne w języku Python za pomocą drukowania

Po prostu bardzo prosty problem. Dzięki!

+2

Na marginesie: Naprawdę chcesz tam te backslashe ? Jeśli tak, lepiej albo jednoznacznie je podwoić, albo użyć ciągłego łańcucha, zamiast polegać na tym, że '\ (' i '\)' nie są sekwencjami unikowymi. – abarnert

+0

Hmm ... Używanie tylko jednego ukośnika odwrotnego zawsze działało dla mnie, aby wydrukować cytaty i nawiasy. Niemniej dziękuję za poradę. – Evan

Odpowiedz

2

Pewnie! Wpisz symbol praw autorskich:

print("©") 

(Nie są to podmioty znaków w Pythonie jak istnieje w, powiedzmy, HTML).

+2

Zwrócę uwagę, że w zależności od Twojej lokalizacji symbol praw autorskich nie jest powszechny na klawiaturach ... – Sinkingpoint

+0

@Quirliom: Czy jest gdziekolwiek? Napisałem go za pomocą Compose, O, C, ale poza tym Mapy postaci mogą być drogą do zrobienia. – Ryan

+0

można wpisać: print ("\ xa9") '(w python3.2) – cIph3r

2

Znak praw autorskich jest znak Unicode. Jeśli twój terminal obsługuje kodowania znaków (jak UTF-8 lub CP1252), który zawiera ten znak, a następnie można go wydrukować:

ta opiera się na Pythonie wykrywanie kodowania znaków terminala:

In [64]: print(u'\N{COPYRIGHT SIGN}') 
© 

ten wykorzystuje wyraźnego kodowanie (co zdarza się pracować, ponieważ mój terminal jest skonfigurowany do korzystania z kodowania znaków UTF-8):

In [65]: print(u'\N{COPYRIGHT SIGN}'.encode('utf-8')) 
© 
13

w Pythonie, które można umieścić wewnątrz ciągów znaków Unicode na trzy sposoby. (Jeśli używasz wersji 2.x zamiast wersji 3.x, łatwiej używać ciągu Unicode - jak w u"…" zamiast "…" - i musisz użyć unichr zamiast chr, ale poza tym wszystko jest takie samo.)

  • "©": Wpisz bezpośrednio.
    • Oznacza to, że prawdopodobnie będziesz musiał wybrać kodowanie znaków dla kodu źródłowego - np. Jawnie zapisać plik jako UTF-8 i umieścić nagłówek kodowania na górze. (W przypadku 3.3, UTF-8 jest domyślny, więc nie potrzebujesz nagłówka kodowania, jeśli tego używasz.)
    • W Mac OS X, w domyślnej konfiguracji większości języków, jest to opt-G.
    • Pod Windows, wierzę, że możesz użyć sztuczki alt-numeric z numerem 0169, aby wejść do tego, choć nie wydaje się to bardzo łatwe.
    • Jeśli nie wiesz, jak wpisać "©" za pomocą klawiatury, skopiuj i wklej ją z innego miejsca (google "znak praw autorskich", a powinieneś znaleźć stronę, z której możesz ją skopiować - lub, jeśli to możliwe, prawo) stąd).
    • Albo, twój komputer prawdopodobnie ma Przeglądarkę postaci lub coś podobnego, co pozwala wskazywać i klikać znaki specjalne.
  • '\ u00a9': Użyj numerycznej sekwencji unikodowej Unicode.
    • Google za "znak praw autorskich Unicode", a szybko zobaczysz, że to U + 00A9. W języku Python to "\ u00a9".
    • W przypadku elementów spoza podstawowej płaszczyzny wielojęzycznej - czyli więcej niż 4 cyfry szesnastkowe, należy użyć kapitału U i 8 cyfr.
  • '\N{COPYRIGHT SIGN}': Użyj sekwencji escape nazwy jednostki Unicode.
    • Ponownie, prawdopodobnie będziesz potrzebować wyszukiwarki Google, aby znaleźć właściwą nazwę jednostki.
    • Nie jest to całkowicie udokumentowane, jakie nazwy można i nie można używać. Ale generalnie działa, gdy tego oczekujesz, i COPYRIGHT SIGN jest oczywiście bardziej czytelny niż 00a9.

Można również robić rzeczy pośrednio np. unicodedata.lookup('COPYRIGHT SIGN') lub chr(0xa9) zwróci ten sam ciąg jako powyższych literałów. Ale naprawdę nie ma powodu, aby nie używać dosłowności.

W dokumencie Pythona jest dużo więcej szczegółów - jeśli nie chcesz czytać całości, The String Type opisuje różne rodzaje sekwencji ucieczki (oraz problemy z kodowaniem/dekodowaniem między kodami Unicode i bajtami ciągi znaków, które są szczególnie ważne w 2.x), a Unicode Literals in Python Source Code opisuje sposób określania deklaracji kodowania.

Jeśli chcesz uzyskać oficjalną listę wszystkich znaków, których możesz użyć, zamiast po prostu google dla nich, spójrz na dokumenty unicodedata dla Twojej wersji Pythona, która zawiera linki do odpowiedniej wersji bazy danych znaków Unicode. (Na przykład: 6.1.0 w 3.3.0, 5.2.0 w 2.7.3 itd.) Będziesz musiał poruszać się po kilku linkach, aby dostać się do rzeczywistej listy, ale to jedyny sposób, w jaki będziesz uzyskaj coś, co gwarantuje, że jest dokładnie skompilowane w Pythonie. (A jeśli nie obchodzi, że równie dobrze można po prostu google lub użyć Wikipedia lub widza znaków komputera.)

+0

Bardzo pomocny. Dzięki! – Evan

+0

@LastTigerEyes: Nie publikuj nowych pytań jako komentarzy do istniejących odpowiedzi. Jeśli masz nowe pytanie, utwórz nowe pytanie. Możesz powrócić do tego pytania lub odpowiedzi, używając 'share', aby uzyskać adres URL, który możesz wkleić do nowego pytania. Ale najpierw szukaj tego; problem z drukowaniem wyjścia Unicode do terminalu 'cmd.exe' systemu Windows został zadany i odebrany dziesiątki razy na tej stronie, jeśli nie setki. – abarnert

+0

Zrobię - dzięki. – LastTigerEyes

2
print u"\u00A9" 

gdzie „\u00A9” to znak Unicode symbolu praw autorskich.

7

W python 2:

>>> print u"\u00a9" 
© 
>>> print u"\N{COPYRIGHT SIGN}" 
© 

W Pythonie 3:

>>> print("\u00a9") 
© 
>>> print("\N{COPYRIGHT SIGN}") 
© 

W python 2 należy poprzedzić ciąg ze u (u"...") powiedzieć Python swój ciąg Unicode. Jednak w pythonie 3 wszystkie łańcuchy są ciągami unicode, więc nie musisz (i właściwie nie wolno ci w 3.0-3.2) przedrostać ciągu znaków u.

można przeglądać listę znaków i wartości ich nazwy/Unicode tutaj: http://www.fileformat.info/info/charset/UTF-16/list.htm i korzystać z nich w ten sam sposób widzisz symbol praw autorskich używany tutaj

+0

Właściwie, ty możesz poprzedzać ciągi literami 'u' w Pythonie 3.2 i późniejszych. (Oczywiście nie ma to żadnego wpływu - ale jest bardzo przydatny do pisania kodu, który działa zarówno w wersjach 2.6-2.7, jak i 3.2+.) – abarnert

+0

został on włożony do wersji 3.3, ale tak, powinienem to zauważyć, dzięki –