Преобразование маленьких заглавных букв Юникода в их эквиваленты ASCII

1

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

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

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

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

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

  • 0
    пожалуйста покажи что ты пробовал
  • 0
    Ссылка, которую вы предоставили, предназначена для другой проблемы. Попробуйте поискать нормализацию (модуль unicodedata
Теги:
unicode
ascii
python-unicode

1 ответ

0

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'
  • 0
    ты почти решил мою проблему. но я получаю эту ошибку, KeyError: "неопределенное имя символа 'LATIN LETTER SMALL CAPITAL Q'"
  • 0
    @ArayanSingh, кажется, версии Python до 3.7 не содержат маленьких заглавных букв 'Q' - вероятно, из-за версии базы данных Unicode, которую они используют. Ответ изменен, чтобы учесть это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню