파이썬에서 유니 코드 문자를 인쇄하는 방법은 무엇입니까?


115

영어 단어가 러시아어와 프랑스어 번역을 가리키는 사전을 만들고 싶습니다.

파이썬에서 유니 코드 문자를 어떻게 인쇄합니까? 또한, 유니 코드 문자를 변수에 어떻게 저장합니까?


도움이 되나요
paulsm4

봐 가지고 여기를 . 문자열에 접두사를 붙이면 u파이썬은이를 유니 코드 문자열 리터럴로 간주 할 수 있습니다.
SRI

답변:


109

Python 소스 코드에 유니 코드 문자를 포함하려면 문자열 의 형식 에 유니 코드 이스케이프 문자 를 사용 \u0123하고 문자열 리터럴 앞에 'u'를 붙일 수 있습니다.

다음은 Python 대화 형 콘솔에서 실행되는 예입니다.

>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия

이와 같이 선언 된 문자열은 Python 유니 코드 문서에 설명 된대로 유니 코드 유형 변수 입니다.

위의 명령을 실행해도 텍스트가 올바르게 표시되지 않으면 터미널에서 유니 코드 문자를 표시 할 수없는 것입니다.

파일에서 유니 코드 데이터를 읽는 방법에 대한 자세한 내용은 다음 답변을 참조하십시오.

Python의 파일에서 문자 읽기


4
그래, 당신은 할 수 있습니다 유니 코드로 인코딩 된 텍스트 파일의 코드를 작성하지만, 편집자 및 도구의 많은 그들과 함께 문제를 다루는 있습니다. 많은 다른 플랫폼에서 소스 코드로 작업 한 경험은 소스 코드를 ASCII로 유지하고 유니 코드 이스케이프를 사용하는 것이 가장 좋습니다.
Matt Ryall

3
@MattRyall, 동의하지만 러시아 개발자 팀이 러시아어로 주석과 독 스트링을 작성하고 싶을 수 있습니다. 언어 프로젝트의 경우 좋은 선택입니다.
Johan Lundberg

3
이것은 문자열 만 인쇄하는 경우에만 작동합니다. 다른 개체에 싸여 있으면 이스케이프 코드가 표시됩니다. 예를 들어 "print [u '\ u0420 \ u043e \ u0441 \ u0441 \ u0438 \ u044f']"를 사용해보세요.
btubbs 2014 년

3
문자열에 저장하면 mystr어떻게됩니까? 그럼 어떻게 인쇄할까요?
cqcn1991

1
@CarloWood 최고의 답변 은 정확히 원하는 것을 알려줍니다. 그냥print your_unicode_characters.encode('utf-8')
Yuhao 장

48

Python에서 유니 코드 문자를 인쇄합니다.

파이썬 인터프리터에서 직접 유니 코드 문자를 인쇄합니다.

el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'

유니 코드 문자 u'\u2713'는 확인 표시입니다. 통역사가 화면에 확인 표시를 인쇄합니다.

Python 스크립트에서 유니 코드 문자를 인쇄합니다.

이것을 test.py에 넣으십시오.

#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');

다음과 같이 실행하십시오.

el@apollo:~$ python test.py
here is your checkmark: 

확인 표시가 나타나지 않으면 터미널 설정이나 스트림 리디렉션으로 수행중인 작업과 같은 다른 곳에서 문제가있을 수 있습니다.

파일에 유니 코드 문자 저장 :

이것을 파일에 저장하십시오 : foo.py :

#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
import codecs
import sys 
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
print(u'e with obfuscation: é')

그것을 실행하고 출력을 파일로 파이프하십시오.

python foo.py > tmp.txt

tmp.txt를 열고 내부를 살펴보면 다음과 같습니다.

el@apollo:~$ cat tmp.txt 
e with obfuscation: é

따라서 난독 화 표시가있는 유니 코드 e를 파일에 저장했습니다.


@ ofer.sheffer 이상하게도 저는 반대 문제를 해결하기 위해 여기에 있습니다. 요점은 약간의 조작이 필요할 수 있다는 것입니다.
Chris H

40

print()유니 코드를 시도하고 ascii 코덱 오류가 발생 하는 경우이 페이지를 확인하세요 . TLDR은 export PYTHONIOENCODING=UTF-8Python을 실행하기 전에 수행 됩니다 (이 변수는 콘솔이 문자열 데이터를 인코딩하려는 바이트 시퀀스를 제어합니다). 내부적으로 Python3은 기본적으로 UTF-8을 사용 합니다 (Unicode HOWTO 참조) .) 그게 문제가 아닙니다. 다른 답변과 주석에서 볼 수 있듯이 유니 코드를 문자열에 넣을 수 있습니다. 문제가 발생하는 것은이 데이터를 콘솔로 가져 오려고 할 때입니다. Python은 콘솔이 ASCII 만 처리 할 수 ​​있다고 생각합니다. 다른 답변 중 일부는 "먼저 파일에 쓰기"라고 말하지만 인코딩 (UTF-8)을 지정하고 (따라서 Python은 쓰기에서 아무것도 변경하지 않음) 읽기 방법을 사용합니다. 인코딩에 관계없이 바이트를 뱉어내는 파일이 작동하는 이유입니다.


감사합니다! asciitree 패키지를 사용하여 결과를 파일에 쓸 때 unicde 문제가 발생했습니다. 이것은 나를 위해 그것을 해결했습니다.
Pål Thingbø

정말 고맙습니다. 인터넷 검색에 시간을 보냈습니다.
CharlyDelta

17

파이썬이, 당신은 유니 코드 문자열 선언 u에서와 같이, u"猫"사용 decode()encode()에 각각 유니 코드로 변환 할 수 있습니다.

파이썬 3에서는 꽤 쉽습니다. 아주 좋은 개요는 여기 에서 찾을 수 있습니다 . 그 발표는 저에게 많은 것을 명확히 해주었습니다.


1
비디오 링크에 대한 Thx. 매우 유용합니다.
arun

1
이것은 비 비디오로도 볼 수 있습니다 : Pragmatic Unicode, 또는 고통을 어떻게 멈출 수 있습니까? (Pycon2012) nedbatchelder.com/text/unipain.html
Tom Hundt

7

이것이 Google 이이 주제를 검색 할 때 첫 번째 스택 오버플로 결과라는 점을 고려할 때, u유니 코드 문자열 접두사 는 Python 3에서 선택 사항 임을 언급합니다. (Python 2 예제는 최상위 답변에서 복사되었습니다)

Python 3 (두 작업 모두) :

print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')

파이썬 2 :

print u'\u0420\u043e\u0441\u0441\u0438\u044f'

감사합니다! 정확히 내가 검색 한 것 : python2와 python3 모두에 대해 문자열 안에 유니 코드 문자를 인쇄하는 보편적 인 방법.
JenyaKh

클램프 된 버전은 Phyton 2에서도 작동해야합니다. 클램프는 옵션이므로 허용됩니다.
Alexander Stohr

4

Windows에서 Portable winpython을 사용하고 IPython QT 콘솔을 포함하여 다음을 얻을 수 있습니다.

>>>print ("結婚")
結婚

>>>print ("おはよう")
おはよう

>>>str = "結婚"


>>>print (str)
結婚

유니 코드 문자를 표시하려면 콘솔 인터프리터가 유니 코드를 지원해야합니다.


3

아직 추가되지 않은 것 하나만 더

Python 2에서 유니 코드가있는 변수를 인쇄하고를 사용하려면 .format()다음을 수행하십시오 (다음을 사용 하여 유니 코드 문자열로 형식화되는 기본 문자열을 만드십시오 u''.

>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal

3

이것은 파이썬에서 UTF-8 인쇄를 수정합니다.

UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)

1

'+''000'으로 바꿉니다 . 예를 들어, 'U + 1F600은' 될 것 'U0001F600' 와 앞에 추가로 유니 코드 "\" 및 인쇄. 예:

>>> print("Learning : ", "\U0001F40D")
Learning :  🐍
>>> 

이것을 확인하면 파이썬 유니 코드 이모티콘에 도움이 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.