当前位置: 首页 > 面试题库 >

移除Python unicode字符串中的重音符号(规范化)的最佳方法是什么?

龙毅
2023-03-14
问题内容

我在Python中有一个Unicode字符串,我想删除所有的重音符号(变音符号)。

我在网上发现了一种优雅的方法(使用Java):

  1. 将Unicode字符串转换为长规范化格式(带有单独的字母和变音符号)
  2. 删除所有Unicode类型为“ diacritic”的字符。
    我是否需要安装pyICU之类的库,还是仅使用Python标准库就可以?那python 3呢?

重要说明:我想避免使用带有重音符号到非重音符号的显式映射的代码。


问题答案:

Unidecode是正确的答案。它将所有unicode字符串音译为ASCII文本中最接近的可能表示形式。

例:

accented_string = u'Málaga'
# accented_string is of type 'unicode'
import unidecode
unaccented_string = unidecode.unidecode(accented_string)
# unaccented_string contains 'Malaga'and is of type 'str'


 类似资料:
  • 问题内容: 我在Python中有一个Unicode字符串,我想删除所有的重音符号(变音符号)。 我在网上发现了一种用Java实现此目的的优雅方法: 将Unicode字符串转换为长规范化格式(带有单独的字母和变音符号) 删除所有Unicode类型为“变音符号”的字符。 我是否需要安装pyICU之类的库,还是仅使用python标准库就可以?那python 3呢? 重要说明:我想避免使用带有重音符号到非

  • 问题内容: 如何使用Python从字符串中删除重复的字符?例如,假设我有一个字符串: 如何制作字符串: 我是python的新手,我已经很累了,它正在工作。我知道有一种最佳的聪明方法。只有经验可以证明这一点。 注意:顺序很重要,这个问题是不是类似于此一个。 问题答案: 使用:

  • 问题内容: 应该有一个比以下方法更简单的方法: 在那儿? 问题答案: 从效率的角度来看,你不会被击败 对于更高版本的Python,请使用以下代码: 它使用查找表在C中执行原始字符串操作-除了编写自己的C代码以外,没有什么比这更好的了。 如果不用担心速度,那么另一个选择是: 这比每个char的更快,但效果不如regexes或等非纯python方法,如下面的时序所示。对于这种类型的问题,以尽可能低的水

  • 问题内容: 如何从字符串中删除重音符号?尤其是在IE6中,我有类似以下内容: 但是IE6困扰着我,似乎不喜欢我的正则表达式。 问题答案: 使用ES2015 / ES6 String.Prototype.Normalize(), 这里发生两件事: 根据Unicode规范形式,将组合的字形分解为简单的字形。在中端起来表示为+ 。 现在,使用正则表达式字符类来匹配U + 0300→U + 036F范围,

  • 问题内容: 我想改变这句话: 等等。 至 : 等等。 有没有像我在Objective-C中那样在Java中执行此操作的简便方法? 问题答案: 最后,我通过使用类解决了它。

  • 我有URL字符串,如: “http://www.xyz/path1/path2/path3?param1=value1&param2=value2”。 我需要获得这个不带参数的url,所以结果应该是: “http://www.xyz/path1/path2/path3”。 我是这样做的: 有没有更好的办法呢?

  • 问题内容: 我正在尝试从PHP字符串中的字符中删除重音符号,作为使字符串在URL中可用的第一步。 我正在使用以下代码: 我期望的输出将是这样的: 但是,不是将重音字符音译,而是将它们替换为问号: 我在网上可以找到的所有内容都表明,设置语言环境将解决此问题,但是我已经这样做了。我已经检查了以下详细信息: 服务器支持我设置的语言环境(包含在产生的列表中) 服务器的iconv版本(包含在产生的列表中)支

  • 问题内容: 我需要确定一个字符串是否包含我定义的自定义集中的任何字符。 您可以使用rangeOfString确定一个字符串是否包含另一个字符串。如果您一次测试一个字符,那么这当然也适用于字符。 我想知道什么是最好的方法。 问题答案: 您可以创建一个包含自定义字符集的,然后针对此字符集测试成员资格: 斯威夫特3: 对于不区分大小写的比较,请使用 (假设字符集仅包含小写字母)。 斯威夫特2: 斯威夫特