python - 将 unicode 小写大写字母转换为其 ASCII 等价物
问题描述
我有以下数据集
'Fʀɪᴇɴᴅ',
'ᴍᴏᴍ',
'ᴍᴀᴋᴇs',
'ʜᴏᴜʀʟʏ',
'ᴛʜᴇ',
'ᴄᴏᴍᴘᴜᴛᴇʀ',
'ʙᴇᴇɴ',
'ᴏᴜᴛ',
'ᴀ',
'ᴊᴏʙ',
'ғᴏʀ',
'ᴍᴏɴᴛʜs',
'ʙᴜᴛ',
'ʟᴀsᴛ',
'ᴍᴏɴᴛʜ',
'ʜᴇʀ',
'ᴄʜᴇᴄᴋ',
'ᴊᴜsᴛ',
'ᴡᴏʀᴋɪɴɢ',
'ғᴇᴡ',
'ʜᴏᴜʀs',
'sᴏᴜʀᴄᴇ',
然后我想使用 Python 脚本转换成 ASCII 格式,例如:
Fʀɪᴇɴᴅ - FRIEND
ᴍᴏᴍ - MOM
我尝试过编码解码,但这不起作用我也尝试过这个解决方案。但这并不能解决我的问题。
解决方案
Python 没有提供直接将小型大写字符转换为其 ASCII 等价物的方法。但是,可以使用str.translate来做到这一点。
要使用str.translate
,我们需要创建小型大写字符的序数值到 ASCII 字符的映射。
要获取序数值,我们可以构造每个字符的名称,然后从unicodedata数据库中获取该字符并对其调用ord。请注意,没有小型大写字母“X”字符,并且在 3.7 之前的 Python 版本中不存在小型大写字母“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'
推荐阅读
- qt - 2d 上下文中的字体缩放
- javascript - AngularJS:使用更新的参数调用相同的 API
- angular - 业力/茉莉花测试中的 Angular 2+ 模板解析错误
- php - 使用 Composer 自动加载 tFPDF 类
- angular - 无法获取有关路线导航的用户信息
- asp.net - ASP.NET Core 返回文件并从同一操作重定向
- powershell - 路径变量上的 if 语句 - powershell - 真/假测试
- r - 将 ggsave 合并到 R 函数中
- r - 官员图表去除图表周围的边界
- swift - 检测 SpriteKit 中节点特定区域的触摸