python希腊字母字符串_在Python unicode字符串中删除重音符号的最佳方法是什么?...

我刚在网上找到这个答案:import unicodedata

def remove_accents(input_str):

nfkd_form = unicodedata.normalize('NFKD', input_str)

only_ascii = nfkd_form.encode('ASCII', 'ignore')

return only_ascii

它工作得很好(例如法语),但我认为第二步(删除重音符号)可以比删除非ASCII字符处理得更好,因为对于某些语言(例如希腊语)这将失败。最好的解决方案可能是显式删除被标记为变音符号的unicode字符。

编辑:这样做的诀窍是:import unicodedata

def remove_accents(input_str):

nfkd_form = unicodedata.normalize('NFKD', input_str)

return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])

如果字符c可以与前面的字符组合,即主要是变音符号,则unicodedata.combining(c)将返回true。

编辑2:remove_accents需要一个unicode字符串,而不是一个字节字符串。如果有字节字符串,则必须将其解码为如下unicode字符串:encoding = "utf-8" # or iso-8859-15, or cp1252, or whatever encoding you use

byte_string = b"café" # or simply "café" before python 3.

unicode_string = byte_string.decode(encoding)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值