Python 3.5用html实体替换重音字符

问题描述 投票:1回答:2

我正在尝试自动执行一系列查询,但是,为此,我需要用相应的html实体替换带有重音的字符。出于原因,它需要在Python3中

例:

vèlit 
[needs to become] 
vèlit

问题是,每当我尝试做一个word.replace时,它都找不到它。

这个:

if u'è' in sentence:
    print(u'Found è')

工作并找到“è”,但做:

word.replace('è','è')

什么都不做。

python python-3.x replace python-unicode iso-8859-15
2个回答
2
投票

word.replace('è','è')替换word = word.replace('è','è')并打印结果进行检查。

word.replace('è','è')确实有效,但它实际上并没有对word内容进行任何更改。

检查str.replace()


0
投票

您可以使用qazxsw poi方法和python qazxsw poi包中的数据将字符转换为等效的html实体。

要做到这一点,str.translate需要一个字典,将字符(技术上是字符的整数表示,或html)映射到html实体。

str.translate包含所需的数据,但实体名称不受'&'和';'的限制。您可以使用dict理解来创建具有所需值的表。

创建表后,使用表作为参数调用字符串的translate方法,结果将是一个新字符串,其中任何具有等效html实体的字符都将被转换。

ordinal

请注意,重音拉丁字符可以由unicode代码点组合表示:'è'可以用单个代码点表示 - 带有GRAVE的LATIN SMALL LETTER E - 或两个代码点 - LATIN SMALL LETTER E,然后是COMBINING GRAVE ACCENT。在后一种情况下(称为分解形式),翻译将无法按预期工作。

为了解决这个问题,您可以使用Python标准库中的html.entities.codepoint2name模块中的>>> import html.entities >>> s = 'vèlit' >>> # Create the translation table >>> table = {k: '&{};'.format(v) for k, v in html.entities.codepoint2name.items()} >>> s.translate(table) 'vèlit' >>> 'Voilà'.translate(table) 'Voilà' 函数将双码点分解形式转换为单个代码点组合形式。

normalize
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.