【问题标题】:Case and accent insensitive string in Python [duplicate]Python中不区分大小写和重音的字符串[重复]
【发布时间】:2020-03-08 16:34:09
【问题描述】:

我有这个字符串

string = "Aquisição de materiais"

我可以在 if 语句中使用以下布尔序列对其进行分类:

if "aquisição" in string or "Aquisição" in string or "AQUISIÇÃO" in string or "aquisicao" in string or "Aquisicao" in string or "AQUISICAO" in string or "aquisiçao" in string or "Aquisiçao" in string or "AQUISIÇAO" in string or "aquisicão" in string or "Aquisicão" in string or "AQUISICÃO" in string: 
return True

嗯,当您必须处理多个单词组合时,这是相当痛苦的。忽略重音和不区分大小写的最简单方法是什么?正则表达式?

【问题讨论】:

  • 您可以使用 unicodedata.normalize() 删除变音符号。
  • 然后比较 string.lower() 是否不区分大小写。
  • @Bober 我应该如何将其放入代码中?什么是正确的合成器?

标签: python regex string


【解决方案1】:

试试这个:

import re
if re.search(r"aquisi[ç|c][ã|a]o", string.lower()):
    return True

或者如果你只需要指定的值,你可以使用这个:

import re
if re.search(r"([aA]quisi[çc][ãa]o|AQUISI[ÇC][ÃA]O)", string):
    return True

【讨论】:

  • aquisi[ç|c][ã|a]o 也将匹配 aquisi||o
  • 你是对的——我的错。必须是([aA]quisi[çc][ãa]o|AQUISI[ÇC][ÃA]O)
  • 这仅适用于“aquisição”,正如我所提到的,我需要进行多种单词组合
猜你喜欢
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
相关资源
最近更新 更多