当前位置: 代码迷 >> python >> 用英文字母替换python中的语言特定字符
  详细解决方案

用英文字母替换python中的语言特定字符

热度:33   发布时间:2023-06-13 16:56:39.0

Python 3 中是否有任何方法可以替换英文字母的通用语言特定字符?
例如,我有函数get_city(IP) ,它返回与给定 IP 连接的城市名称。 它连接到外部数据库,所以我不能改变它的编码方式,我只是从数据库中获取价值。
我想做类似的事情:

city = "?eské Budějovice"
city = clear_name(city)
print(city) #should return "Ceske Budejovice"

在这里我使用捷克语,但总的来说它应该适用于任何非亚洲语言。

尝试单 :

# coding=utf-8
from unidecode import unidecode

city = "?eské Budějovice"
print(unidecode(city.decode('utf-8')))

根据需要打印Ceske Budejovice (假设您的帖子有拼写错误)。

在这种情况下使用unicodedata模块。
要获得所需的结果,您应该使用和函数对给定的字符串进行规范化:

import unicodedata

city = "?eské Budějovice"
normalized = unicodedata.normalize('NFD', city)
new_city = u"".join([c for c in normalized if not unicodedata.combining(c)])

print(new_city)   # Ceske Budejovice

NFD是四种Unicode 规范化形式之一

上面的 Asongtoring 几乎是正确的 - 但在 Python 3 中它更简单一些,因为 Pavlo Fesenko 在解决方案的评论中提到。 这里是 Python 3 中的解决方案

from unidecode import unidecode

city = "?eské Budějovice"
print(unidecode(city))
  相关解决方案