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

时间:2017-02-13 13:49:12

标签: python string encoding character-encoding decoding

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

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

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

3 个答案:

答案 0 :(得分:4)

尝试unidecode

# coding=utf-8
from unidecode import unidecode

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

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

答案 1 :(得分:2)

对于此类情况,请使用unicodedata模块  要获得所需的结果,您应该使用unicodedata.normalize()和来规范化给定的字符串 unicodedata.combining()函数:

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规范化表单中的一种

http://www.unicode.org/reports/tr15/

答案 2 :(得分:0)

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

from unidecode import unidecode

city = "České Budějovice"
print(unidecode(city))