Преобразование маленьких заглавных букв Юникода в их эквиваленты ASCII - PullRequest
1 голос
/ 17 апреля 2019

У меня есть следующий набор данных

'Fʀɪᴇɴᴅ',
 'ᴍᴏᴍ',
 'ᴍᴀᴋᴇs',
 'ʜᴏᴜʀʟʏ',
 'ᴛʜᴇ',
 'ᴄᴏᴍᴘᴜᴛᴇʀ',
 'ʙᴇᴇɴ',
 'ᴏᴜᴛ',
 'ᴀ',
 'ᴊᴏʙ',
 'ғᴏʀ',
 'ᴍᴏɴᴛʜs',
 'ʙᴜᴛ',
 'ʟᴀsᴛ',
 'ᴍᴏɴᴛʜ',
 'ʜᴇʀ',
 'ᴄʜᴇᴄᴋ',
 'ᴊᴜsᴛ',
 'ᴡᴏʀᴋɪɴɢ',
 'ғᴇᴡ',
 'ʜᴏᴜʀs',
 'sᴏᴜʀᴄᴇ',

Я хочу затем в формат ASCII, используя скрипт Python, например:

Fʀɪᴇɴᴅ - FRIEND
ᴍᴏᴍ - MOM

Я пробовал кодирование, но это не работает, ятакже попробовал это решение .но это не решает мою проблему.

1 Ответ

1 голос
/ 17 апреля 2019

Python не предоставляет способ прямого преобразования маленьких заглавных букв символов в их эквиваленты ASCII. Однако это можно сделать, используя str.translate .

Чтобы использовать str.translate, нам нужно создать отображение порядковых значений символов маленьких заглавных букв в символы ASCII.

Чтобы получить порядковые значения, мы можем создать имя каждого символа, затем получить символ из базы данных unicodedata и вызвать на нем ord . Обратите внимание, что нет маленького заглавного символа 'X', и в версиях Python до 3.7 маленьких заглавных букв 'Q' нет.

>>> from string import ascii_uppercase
>>> import unicodedata as ud

>>> # Filter out unsupported characters
>>> # Python < 3.7
>>> letters = (x for x in ascii_uppercase if x not in ('Q', 'X'))
>>> # Python >= 3.7
>>> letters = (x for x in ascii_uppercase if x != 'X') 

>>> mapping = {ord(ud.lookup('LATIN LETTER SMALL CAPITAL ' + x)): x for x in letters}

Получив отображение, мы можем использовать его для создания таблицы перевода для str.translate, используя str.maketrans , а затем выполнить преобразования.

>>> # Make as translation table
>>> tt = str.maketrans(mapping)
>>> # Use the table to "translate" strings to their ASCII equivalent.
>>> s = 'ᴍᴏɴᴛʜ'
>>> s.translate(tt)
'MONTH'
...