Автор оригинала: Pankaj Kumar.
Эй, ребята! В этом уроке мы узнаем о Юникоде в Python и свойствах символов Юникода. Итак, давайте начнем.
Что такое Юникод?
Юникод связывает каждый символ и символ с уникальным числом, называемым кодовыми точками. Он поддерживает все мировые системы письма и гарантирует, что данные могут быть извлечены или объединены с использованием любой комбинации языков.
Кодовая точка-это целочисленное значение в диапазоне от 0 до 0x10FFFF в шестнадцатеричном кодировании.
Чтобы начать использовать символы Юникода в Python, нам нужно понять, как модуль string интерпретирует символы.
Как интерпретировать ASCII и Unicode в Python?
Python предоставляет нам модуль string , который содержит различные функции и инструменты для управления строками. Он подпадает под набор символов ASCII.
import string print(string.ascii_lowercase) print(string.ascii_uppercase) print(string.ascii_letters) print(string.digits) print(string.hexdigits) print(string.octdigits) print(string.whitespace) print(string.punctuation)
Выход:
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 0123456789abcdefABCDEF 01234567 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Мы можем создавать односимвольные строки Юникода с помощью встроенной функции chr () . Он принимает в качестве аргумента только одно целое число и возвращает юникод данного символа.
Аналогично, odr ()-это встроенная функция, которая принимает односимвольную строку Юникода в качестве входных данных и возвращает значение кодовой точки.
chr(57344) ord('\ue000')
Выход:
'\ue000' 57344
Что означает кодировка символов в Python?
Строка-это последовательность кодовых точек Юникода. Эти кодовые точки преобразуются в последовательность байтов для эффективного хранения. Этот процесс называется кодированием символов.
Существует множество кодировок,таких как UTF-8,UTF-16, ASCII и т. Д.
По умолчанию Python использует кодировку UTF-8.
Что такое кодировка UTF-8?
UTF-8 является наиболее популярным и часто используемым для кодирования символов. UTF расшифровывается как Формат преобразования Юникода , а “8” означает, что в кодировке используются 8-битные значения|/.
Он заменил ASCII (американский стандартный код Для обмена информацией), поскольку он содержит больше символов и может использоваться для разных языков по всему миру, в отличие от ASCII, который ограничен только латинскими языками.
Первые 128 кодовых точек в наборе символов UTF-8 также являются допустимыми символами ASCII. Символ в UTF-8 может иметь длину от 1 до 4 байт.
Кодирование символов в UTF-8 с помощью функции Python encode()
Метод encode() преобразует любой символ из одной кодировки в другую. Синтаксис функции кодирования выглядит следующим образом –
string.encode(encoding='UTF-8',errors='strict')
Параметры :
- кодировка – это кодировка, которая будет использоваться и поддерживается python.
- ошибки – Список различных типов ошибок приведен ниже
- strict- Ошибка по умолчанию – strict , которая вызывает UnicodeDecodeError при сбое.
- игнорировать – Игнорирует не поддающийся кодированию юникод из результата.
- заменить – Заменяет undecodable unicode на ‘?’
- xmlcharrefreplace- Вставляет ссылку на символ xlm вместо undecodable unicode.
- backslashreplace- Вставки \uNNNN escape-последовательности вместо undecodable unicode.
- имя заменить- Вставляет \N{…} escape-последовательность вместо undecodable unicode.
Как использовать Unicode в Python с функцией encode ()?
Теперь давайте перейдем к пониманию того, как функция кодирования строк может позволить нам создавать строки unicode в Python.
1. Закодируйте строку в кодировку UTF-8
string = 'örange' print('The string is:',string) string_utf=string.encode() print('The encoded string is:',string_utf)
Выход:
The string is: örange The encoded string is: b'\xc3\xb6range'
2. Кодирование с параметром ошибки
Давайте закодируем немецкое слово weiß, которое означает белый.
string = 'weiß' x = string.encode(encoding='ascii',errors='backslashreplace') print(x) x = string.encode(encoding='ascii',errors='ignore') print(x) x = string.encode(encoding='ascii',errors='namereplace') print(x) x = string.encode(encoding='ascii',errors='replace') print(x) x = string.encode(encoding='ascii',errors='xmlcharrefreplace') print(x) x = string.encode(encoding='UTF-8',errors='strict') print(x)
Выход:
b'wei\\xdf' b'wei' b'wei\\N{LATIN SMALL LETTER SHARP S}' b'wei?' b'weiß' b'wei\xc3\x9f'
Модуль unicodedata для работы с Юникодом в Python
Модуль unicodedata предоставляет нам базу данных символов Unicode (UCD) , которая определяет все свойства символов всех символов Unicode.
Давайте рассмотрим все функции, определенные в модуле, на простом примере, чтобы объяснить их функциональность. Мы можем эффективно использовать Unicode в Python с помощью следующих функций.
1. unicodedata.поиск(имя)
Эта функция ищет символ по заданному имени. Если символ найден, возвращается соответствующий символ. Если не найдено, то вызывается Keyerror.
import unicodedata print (unicodedata.lookup('LEFT CURLY BRACKET')) print (unicodedata.lookup('RIGHT SQUARE BRACKET')) print (unicodedata.lookup('ASTERISK')) print (unicodedata.lookup('EXCLAMATION MARK'))
Выход:
{ ] * !
2. unicodedata.name(chr[, по умолчанию])
Эта функция возвращает имя, присвоенное символу chr в виде строки. Если имя не определено, оно возвращает значение по умолчанию, в противном случае оно вызывает ошибку Keyerror.
import unicodedata print (unicodedata.name(u'%')) print (unicodedata.name(u'|')) print (unicodedata.name(u'*')) print (unicodedata.name(u'@'))
Выход:
PERCENT SIGN VERTICAL LINE ASTERISK COMMERCIAL AT
3. unicodedata.decimal(chr[, по умолчанию])
Эта функция возвращает десятичное значение, присвоенное символу chr . Если значение не определено, то возвращается значение по умолчанию, в противном случае возникает ошибка Keyerror, как показано в примере ниже.
import unicodedata print (unicodedata.decimal(u'6')) print (unicodedata.decimal(u'b'))
Выход:
6 Traceback (most recent call last): File "D:\DSCracker\DS Cracker\program.py", line 4, inprint (unicodedata.decimal(u'b')) ValueError: not a decimal
4. unicodedata.digit(chr[, по умолчанию])
Эта функция возвращает числовое значение, присвоенное символу chr , как целое число. Следует отметить, что эта функция принимает в качестве входных данных один символ. В последней строке в этом примере я использовал “20”, и функция выдает ошибку, указывающую, что она не может принять строку в качестве входных данных.
import unicodedata print (unicodedata.decimal(u'9')) print (unicodedata.decimal(u'0')) print (unicodedata.decimal(u'20'))
Выход:
9 0 Traceback (most recent call last): File "D:\DSCracker\DS Cracker\program.py", line 5, inprint (unicodedata.decimal(u'20')) TypeError: decimal() argument 1 must be a unicode character, not str
5. unicodedata.numeric(chr[, по умолчанию])
Эта функция возвращает числовое значение, присвоенное символу chr , в виде целого числа. Если значение не определено, то оно возвращает значение по умолчанию, в противном случае возникает ошибка ValueError.
import unicodedata print (unicodedata.decimal(u'1')) print (unicodedata.decimal(u'8')) print (unicodedata.decimal(u'123'))
Выход:
1 8 Traceback (most recent call last): File "D:\DSCracker\DS Cracker\program.py", line 5, inprint (unicodedata.decimal(u'123')) TypeError: decimal() argument 1 must be a unicode character, not str
6. unicodedata.category(char)
Эта функция возвращает общую категорию, присвоенную символу chr в виде строки. Он возвращает “L” для буквы и ” u “для верхнего регистра и” l ” для нижнего регистра.
import unicodedata print (unicodedata.category(u'P')) print (unicodedata.category(u'p'))
Выход:
Lu Ll
7. unicodedata.двунаправленный(chr)
Эта функция возвращает двунаправленный класс, назначенный символу chr в виде строки. Эта функция возвращает пустую строку, если такое значение не определено.
AL обозначает арабскую букву, AN обозначает арабское число, а L обозначает слева направо и т. Д.
import unicodedata print (unicodedata.bidirectional(u'\u0760')) print (unicodedata.bidirectional(u'\u0560')) print (unicodedata.bidirectional(u'\u0660'))
Выход:
AL L AN
8. unicodedata.combining(chr)
Эта функция возвращает канонический класс объединения, присвоенный данному символу chr в виде строки. Он возвращает 0, если класс объединения не определен.
import unicodedata print (unicodedata.combining(u"\u0317"))
Выход:
220
9. unicodedata.mirrored(chr)
Эта функция возвращает свойство mirrored , присвоенное данному символу chr в виде целого числа. Он возвращается 1 если символ идентифицирован как ” зеркально отраженный ” в двунаправленном тексте или иначе он возвращается 0 .
import unicodedata print (unicodedata.mirrored(u"\u0028")) print (unicodedata.mirrored(u"\u0578"))
Выход:
1 0
10. unicodedata.normalize(форма, unistr)
Использование этой функции возвращает обычную форму для строки Unicode unistr. Допустимыми значениями для формы являются “NFC”, “NFKC”, ” NFD ” и “NFKD”.
from unicodedata import normalize print ('%r' % normalize('NFD', u'\u00C6')) print ('%r' % normalize('NFC', u'C\u0367')) print ('%r' % normalize('NFKD', u'\u2760'))
Выход:
'Æ' 'Cͧ' '❠'
Вывод
В этом уроке мы узнали о unicode и модуле базы данных unicode, который определяет характеристики unicode. Надеюсь, вам всем понравилось. Оставайтесь С Нами 🙂
Рекомендации
Официальные документы Unicode
База данных Unicode