栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

正则表达式用于Python中的重音不敏感替换

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式用于Python中的重音不敏感替换

unidepre
经常被提及用于删除Python中的重音符号,但它的作用还不止于此:它将转换
'°'
'deg'
,这可能不是所需的输出。

unipredata
似乎具有消除口音的功能。

有任何图案

此方法应适用于任何模式和任何文本。

您可以从文本和正则表达式模式中暂时删除重音。来自

re.finditer()
(开始和结束索引)的匹配信息可用于修改原始的带重音符号的文本。

请注意,必须颠倒匹配项才能不修改以下索引。

import reimport unipredataoriginal_text = "I'm drinking a 80° café in a cafe with Chloë, François Déporte and Francois Deporte."accented_pattern = r'a café|François Déporte'def remove_accents(s):    return ''.join((c for c in unipredata.normalize('NFD', s) if unipredata.category(c) != 'Mn'))print(remove_accents('äöüßéèiìììíàáç'))# aoußeeiiiiiaacpattern = re.compile(remove_accents(accented_pattern))modified_text = original_textmatches = list(re.finditer(pattern, remove_accents(original_text)))for match in matches[::-1]:    modified_text = modified_text[:match.start()] + 'X' + modified_text[match.end():]print(modified_text)# I'm drinking a 80° café in X with Chloë, X and X.

如果模式是一个单词或一组单词

你可以 :

  • 从模式词中删除重音并将其保存在一组中以便快速查找
  • 寻找与您的文字中的每个单词
    w+
  • 从单词中删除重音:
    • 如果匹配,则替换为
      X
    • 如果不匹配,则保持原样

import refrom unidepre import unidepreoriginal_text = "I'm drinking a café in a cafe with Chloë."def remove_accents(string):    return unidepre(string)accented_words = ['café', 'français']words_to_remove = set(remove_accents(word) for word in accented_words)def remove_words(matchobj):    word = matchobj.group(0)    if remove_accents(word) in words_to_remove:        return 'X'    else:        return wordprint(re.sub('w+', remove_words, original_text))# I'm drinking a X in a X with Chloë.


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号