【发布时间】:2009-07-28 07:21:11
【问题描述】:
假设我有字符串"blöt träbåt",其中有几个a 和o,上面带有变音符号和环。我希望它尽可能简单地变成"blot trabat"。我做了一些挖掘,发现了以下方法:
import unicodedata
unicode_string = unicodedata.normalize('NFKD', unicode(string))
这将为我提供 unicode 格式的字符串,其中国际字符拆分为基本字母和组合字符(\u0308 表示变音符号。)现在要将其恢复为 ASCII 字符串,我可以执行 ascii_string = unicode_string.encode('ASCII', 'ignore') 它会忽略组合字符,得到字符串"blot trabat"。
这里的问题是:有没有更好的方法来做到这一点?感觉就像一个迂回的方式,我在想可能有一些我不知道的东西。我当然可以将它包装在一个辅助函数中,但我宁愿检查它是否在 Python 中已经不存在。
【问题讨论】:
-
"ASCII 字符串 "blöt träbåt"" 是矛盾的。 ASCII 没有重音字符。您的意思是“Unicode 字符串”吗?
-
嘿,这与我在 C# 中所做的完全一样...
-
是的,我刚刚意识到我使用了错误的术语。不过,它不一定必须是 Unicode。它可以扩展为 ASCII(这是我真正的意思。)
-
@orsogufo:当我提出这个问题时,最重要的建议是 C# 的解决方案,所以搜索
=) -
@Blixt:谢谢,我的意思是我已经这样实现了:) 似乎是一种标准方式。只是出于好奇:为什么需要这样做?
标签: python string internationalization