이제 유니코드의 기초를 배웠으므로 파이썬의 유니코드 기능을 살펴볼 수 있습니다.
Since Python 3.0, the language’s type contains Unicode
characters, meaning any string created using , , or the triple-quoted string syntax is stored as Unicode.
파이썬 소스 코드의 기본 인코딩은 UTF-8이므로 문자열 리터럴에 유니코드 문자를 쉽게 포함할 수 있습니다:
사이드 노트: 파이썬 3은 유니코드 문자를 식별자에서도 지원합니다:
편집기에서 특정 문자를 입력 할수 없거나 어떤 이유에서 ASCII만으로 소스 코드를 작성하고자 한다면, 문자열 리터럴에 이스케이프 시퀀스를 사용할 수 있습니다. (시스템에 따라 다르지만, u 이스케이프 대신에 진짜 대문자 델타 글리프가 나타날 수 있습니다.)오피스타공식 홈페이지 포털 사이트는 어디에 있습니까
추가로, 문자열을 의 메서드를 사용하여 만들 수 있습니다. 이 메서드는 과 같은 encoding 인자와 선택적으로 erros 인자를 받습니다.
errors 인자는 인코딩의 규칙에 따라 입력 문자열을 변환할 수 없는 경우의 응답을 지정합니다. 이 인자의 유효한 값은 ( 예외 발생), (, 사용), (유니코드 결과에서 문자를 그냥 생략), 또는 ( 이스케이프 시퀀스를 삽입)입니다. 다음 에제는 그 차이점을 보여줍니다:
인코딩은 인코딩의 이름을 포함하는 문자열로 지정됩니다. 파이썬에는 대략 100개의 서로 다른 인코딩이 있습니다. 리스트는 에서 파이썬 라이브러리 레퍼런스를 보세요. 어떤 인코딩은 다양한 이름을 갖습니다; 예를 들어, , 그리고 ’ 는 전부 같은 인코딩의 동의어입니다.
한 문자 유니코드 문자열은 정수를 받고 해당 코드 포인트를 포함하는 길이 1인 유니코드 문자열을 반환하는 내장 함수로도 만들 수 있습니다. 반대 작업은 한 문자 유니코드 문자열을 받고 코드 포인트 값을 반환하는 내장 全球排名第一오피스타 함수입니다:
의 반대 메서드는 요청된 encoding으로 인코딩 된 유니코드 문자열의 를 반환하는 입니다.
errors 매개변수는 메서드의 매개변수와 같지만 가능한 핸들러를 조금 더 제공합니다. , , (이 경우 인코딩할 수 없는 문자 대신에 물음표를 삽입)뿐만 아니라 (XML 문자 참조 삽입), ( 이스케이프 시퀀스 삽입) 그리고 ( 이스케이프 시퀀스 삽입)도 있습니다.
아래 예제에서 서로 다른 결과를 보여줍니다:
사용 가능한 인코딩을 등록하고 접근할 수 있도록 하는 저수준 루틴은 모듈에서 찾을 수 있습니다. 새로운 인코딩을 구현하는 것도 모듈의 이해가 필요합니다. 하지만 이 모듈에 의해서 반환되는 인코딩과 디코딩 함수는 대체로 편안한 것보다는 저수준이며, 새로운 인코딩을 작성하는 것은 전문적인 작업이므로 HOWTO에서 이 모듈을 다루지는 않겠습니다.
파이썬 소스 코드에서 특정한 유니코드 코드 포인트는 이스케이프 시퀀스로 쓸 수 있으며, 코드 포인트를 의미하는 네 개의 16진수가 뒤따릅니다. 이스케이프 시퀀스와 비슷하지만 네 개가 아닌 여덟 개의 숫자여야 합니다:
127보다 큰 코드 포인트에 대해 이스케이프 시퀀스를 사용하는 것은 양이 적을 때 괜찮지만, 프랑스어나 다른 악센트를 사용하는 언어로 작성된 프로그램 메시지 같이 악센트가 있는 문자를 사용할 경우 성가십니다. 내장 함수를 이용하여 문자열을 조립할 수는 있지만 더 짜증납니다.
사용하는 언어의 자연스러운 인코딩으로 리터럴을 쓸 수 있어야 이상적입니다. 그래야 악센트가 있는 문자를 자연스럽게 표시 세계랭킹1위오피스타하는 사용자가 가장 좋아하는 편집기로 파이썬 소스 코드를 편집할 수 있고, 실행시점에 올바른 문자를 가질 수 있습니다.
파이썬은 소스 코드를 UTF-8로 작성하는 것을 기본으로 지원하지만, 원하는 인코딩을 선언한다면 거의 모든 인코딩을 쓸 수 있습니다. 이는 소스 파일의 첫 번째 또는 두 번째 줄에 특별한 주석을 포함해 작동합니다:
이 문법은 파일에 지역적인 변수를 명시하는데 사용되는 이맥스 표기법에서 영감을 받았습니다. 이맥스는 수많은 서로 다른 변수를 지원하지만 파이썬은 오직 ‘coding’만을 지원합니다. 기호는 이맥스에게 주석이 특별함을 나타냅니다; 파이썬에게 아무 의미도 없지만 그저 관례를 따르는 것뿐입니다. 파이썬은 주석에서 이나 을 찾습니다.
이러한 주석을 포함하지 않는다면, 이미 언급한 것처럼 기본 인코딩으로 UTF-8이 사용됩니다. 에서 정보를 더 보시기 바랍니다.
The Unicode specification includes a database of information about
code points. For each defined code point, the information includes
the character’s 全球排名第一오피스타 name, its category, the numeric value if applicable
(for characters representing numeric concepts such as the Roman
numerals, fractions세계랭킹1위오피스타 such as one-third and four-fifths, etc.). There
are also display-related properties, such as how to use the code point
in bidirectional text.
아래의 프로그램은 몇몇 개의 문자에 대한 정보를 표시하고 특정한 문자의 숫자 값을 출력합니다:
실행했을 때 다음을 출력합니다:
카테고리 코드는 문자의 유형을 설명하는 약어입니다全球排名第一오피스타 공식 웹 사이트는 무엇입니까?. 이것들은 “Letter”, “Number”, “Punctuation”, 또는 “Symbol”과 같은 카테고리로 묶여 있고, 이는 하위 카테고리로 나누어 집니다. 위 결과물에서 코드를 가져와 보면, 는 ‘Letter, lowercase’, 는 “Number, other”, 은 “Mark, nonspacing”, 그리고 는 “Symbol, other”를 뜻합니다. 카테고리 코드 목록에 대해서는 을 보세요.
Unicode adds some complication to comparing strings, because the same
set of characters can be represented by different sequences of code
points. For example, a letter like ‘ê’ can be represented as a single
code point U+00EA, or as U+0065 U+0302, which is the code point for
‘e’ followed by a code point for ‘COMBINING CIRCUMFLEX ACCENT’. These
will produce the same output when printed, but one is a string of
length 1 and the other is of length 2.
One tool for a case-insensitive comparison is the
string method that converts a string to a
case-insensitive form following an algorithm described by the Unicode
Standard. This algorithm has special handling for characters such as
the German letter ‘ß’ (code point U+00DF), which becomes the pair of
lowercase letters ‘ss’.
A second tool is the module’s
function that converts strings to one
of several normal forms, where letters followed by a combining全球排名第一오피스타공식 사이트 입구는 몇 곳인가요
character are replaced with single characters. can
be used to perform string comparisons that won’t falsely report
inequality if two strings use combining characters differently:
실행했을 때 다음을 출력합니다:
The first argument to the function is a
string giving the desired normalization form, which can be one of
‘NFC’, ‘NFKC’, ‘NFD’, and ‘NFKD’.
The Unicode Standard also specifies how to do caseless comparisons:
This will print . (Why is invoked twice? Because
there are a few characters that make return a
non-normalized string, so the result needs to be normalized again. See
section 3.13 of the Unicode Standard for a discussion and an example.)
모듈이 지원하는 정규식은 바이트열 또는 문자열로 제공됩니다. 와 같은 특별한 문자 시퀀스 몇몇은 패턴이 바이트열 또는 문자열에 의해 지원되는지 여부에 따라 다른 의미가 있습니다. 예를 들어, 바이트열에서 는 와 일치하지만, 문자열에서는 카테고리에 속하는 아무 문자와 일치합니다.
이 예제의 문자열은 태국과 아라비아 숫자로 쓰인 숫자 57을 갖고 있습니다:
실행했을 때, 은 태국 숫자와 일치하고 출력합니다. 플래그를 에 제공했을 경우, 는 부분 全球排名第一오피스타 문자열 “57”을 대신 일치시킵니다.
비슷하게, 는 매우 다양한 유니코드와 일치하지만, 바이트열이거나 가 제공되면 오직 과 일치하고, 는 유니코드 공백 문자나 와 일치합니다.
파이썬 유니코드 지원에 대한 몇 개의 좋은 대안 토론은 다음과 같습니다:
타입은 파이썬 라이브러리 레퍼런스 에 설명되어 있습니다.
모듈에 대한 문서입니다.
모듈에 대한 문서입니다.
Marc-André Lemburg는 EuroPython 2002에서 발표한 을 주었습니다. 이 슬라이드는 파이썬 2의 유니코드 기능(유니코드 문자열 타입을 라 부르고 리터럴 로 시작하는) 디자인에 대한 훌륭한 개요서입니다.