Python에서 유니 코드 문자를 ASCII 문자열로 변환

Rayven Esplanada 2021년7월18일
Python에서 유니 코드 문자를 ASCII 문자열로 변환

유니 코드 문자는 모든 언어의 문자에 대한 글로벌 인코딩 표준입니다. 문자 당 단일 바이트 만 지원하는 ASCII와 달리 유니 코드 문자는이 기능을 4 바이트로 확장하여 모든 언어에서 더 많은 문자를 지원합니다.

이 튜토리얼은 유니 코드 문자를 ASCII 문자열로 변환하는 방법을 보여줍니다. 목표는 ASCII에서 지원되지 않는 문자를 제거하거나 유니 코드 문자를 해당 ASCII 문자로 바꾸는 것입니다.

unicodedata.normalize()encode()를 사용하여 Python에서 유니 코드를 ASCII 문자열로 변환

Python 모듈 unicodedata는 유니 코드 문자 데이터베이스를 활용하는 방법과 이러한 문자에 대한 액세스, 필터링 및 조회를 훨씬 쉽게 도와주는 유틸리티 함수를 제공합니다.

unicodedata에는 두 개의 매개 변수 (유니 코드 문자열의 정규화 된 형식과 주어진 문자열)를받는normalize()라는 함수가 있습니다.

정규화 된 유니 코드 형식에는NFC,NFKC,NFDNFKD의 4 가지 유형이 있습니다. 이에 대해 자세히 알아 보려면 공식 문서에서 각 유형에 대한 철저하고 심층적 인 설명을 쉽게 구할 수 있습니다. NFKD정규화 된 양식이이 튜토리얼 전체에서 사용됩니다.

여러 유니 코드 문자로 문자열을 선언 해 봅시다.

import unicodedata

stringVal = u"Här är ett exempel på en svensk mening att ge dig."

print(unicodedata.normalize("NFKD", stringVal).encode("ascii", "ignore"))

normalize()메서드를 호출 한 후encode()함수에 대한 호출을 연결하여 유니 코드에서 ASCII로 변환합니다.

문자열 값 앞의u문자는 Python이 문자열 값에 유니 코드 문자가 포함되어 있음을 인식하는 데 도움이됩니다. 이것은 유형 안전 목적으로 수행됩니다.

첫 번째 매개 변수는 변환 유형을 지정하고 두 번째 매개 변수는 문자를 변환 할 수없는 경우 수행해야하는 작업을 강제합니다. 이 경우 두 번째 매개 변수는 변환 할 수없는 문자를 무시하는ignore를 전달합니다.

출력:

b'Har ar ett exempel pa en svensk mening att ge dig.'

원래 문자열 (äå)의 유니 코드 문자가 해당 ASCII 문자 (a)로 대체되었습니다.

문자열 시작 부분의b기호는encode()함수가 문자열에 사용되기 때문에 문자열이 바이트 리터럴임을 나타냅니다. 문자열을 캡슐화하는 기호와 작은 따옴표를 제거하려면encode()를 호출 한 후decode()함수를 체인 호출하여 문자열 리터럴로 다시 변환합니다.

print(unicodedata.normalize("NFKD", stringVal).encode("ascii", "ignore").decode())

출력:

Har ar ett exempel pa en svensk mening att ge dig.

encode()함수의 두 번째 매개 변수로replace를 사용하는 다른 예제를 시도해 보겠습니다.

이 예에서는 ASCII 대응 문자가없는 문자가있는 문자열을 사용해 보겠습니다.

import unicodedata

stringVal = u"áæãåāœčćęßßßわた"

print(unicodedata.normalize("NFKD", stringVal).encode("ascii", "replace").decode())

이 예제 문자열 내의 모든 문자는 ASCII로 등록되지 않지만 대응 기호가있을 수 있습니다.

출력:

a??a?a?a??c?c?e??????

replace매개 변수는 ASCII 대응 문자가없는 문자를 물음표?로 완전히 대체합니다. 만약 우리가 같은 문자열에 ignore를 사용한다면:

print(unicodedata.normalize("NFKD", stringVal).encode("ascii", "ignore").decode())

출력은 다음과 같습니다.

aaaacce

요약하면 유니 코드 문자를 ASCII 문자로 변환하려면unicodedata모듈에서normalize()함수를 사용하고 문자열에 대해 내장encode()함수를 사용합니다. ASCII 대응 문자가 없는 유니코드 문자를 무시하거나 바꿀 수 있습니다. ignore옵션은 문자를 제거하고replace옵션은 물음표로 대체합니다.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

관련 문장 - Python Unicode

관련 문장 - Python String