【问题标题】:Convert Unicode to double ASCII letters in Python (ß -> ss)在 Python 中将 Unicode 转换为双 ASCII 字母(ß -> ss)
【发布时间】:2012-06-28 15:58:42
【问题描述】:

一些 Unicode 字符也可以写成两个 ASCII 字母(例如:ß -> ss、å -> aa)。有没有什么方法可以在 Python 中转换这些,而无需列出所有这些?

稍后编辑:

这种转换是由许多网站完成的,包括 *(此页面的 URL 已转换)和 Twitter。我很好奇他们是怎么做到的。

【问题讨论】:

  • 由于这些转换的规则因文化和上下文而异(ß -> ss 并不总是合法的,有时 ß -> sz 更合适),它可能不是默认值模块。
  • å -> aa 可能是也可能不是有效的转换,具体取决于语言环境
  • @STATUS 作为奥地利人,我想不出一个单词可以用 sz 代替 ss 来代替 ß。我认为“新”拼写改革可能与此有关,我确实经常在旧书中看到这一点。或者我现在只是缺少所有示例;)
  • @Voo:我认为您缺少单词 - 简单地说 - 如果您执行 ß -> ss,则非常模棱两可。示例:Maße -> Masse。把它写成 Masze 可以让意思很明显,即使它看起来“奇怪”:) ...如果你没有上下文(即这个词单独出现在表格标题而不是句子中,这将导致混乱)。类似的推理可以应用于一些全大写的单词。
  • @Voo:同意。但是再举一个例子:一些有 ö 的文化会将其转换为 oe,而另一些则简单地转换为 o。现在机器不太擅长这种猜测工作。所以你可以根据文化来接近(尤其是如果你知道它),但没有通用的解决方案。

标签: python unicode encoding


【解决方案1】:

没有通用的规则。

您可以尝试unidecode 模块将 Unicode 文本音译为 ASCII。

【讨论】: