首页 > 解决方案 > Python - 检测字符串中重音 HTML 转义的最佳方法?

问题描述

Python 有一些很好的库可以将 Unicode 重音字符转换为其最接近的 Ascii 字符,以及将代码点编码为其 Unicode 字符的库。

但是,有哪些选项可以检查字符串是否具有 unicode 代码点或 HTML 转义?例如,这个字符串:

Rialta te Venice&#199

&#199,翻译成拉丁文大写字母 C。是否有一个 python 库可以检测字符串中的代码点/转义并输出 Unicode 等价物?

标签: pythonstringunicodeasciinon-ascii-characters

解决方案


我不太清楚你在问什么,但这是我最好的尝试:

  1. &#199是一个HTML 转义,您可以像这样取消转义

    >>> s = 'Rialta te Venice&#199'
    >>> import html
    >>> s2 = html.unescape(s); s2
    'Rialta te VeniceÇ'
    
  2. 正如您所说,有一些用于规范化/删除重音的库:

    >>> import unidecode
    >>> unidecode.unidecode(s2)
    'Rialta te VeniceC'
    

    您实际上不需要检查它是否具有 Unicode 代码点,因为此函数不会更改非重音字符。但是您仍然可以使用s2.isascii().

所以完整的解决方案是使用unidecode.unidecode(html.unescape(s)).


推荐阅读