我需要测试一个字符串是否包含列表中的一个字符串,忽略重音
我尝试使用for+in+if+unidecode,但没有成功:
from unidecode import unidecode
def temServentiaExclusiva(nome_orgao):
#fix-me: pegar ids dinamicamente
regras = [
{'especializada_id':70, 'termos': [u'orfaos e sucessoes', u'familia']}
]
for r in regras:
#if(unidecode(nome_orgao) in s for s in r['termos']):
if([t for t in r['termos'] if(t in unidecode(nome_orgao))]):
return r['especializada_id']
print(temServentiaExclusiva('orfãos'))
print(temServentiaExclusiva('Cartório da 6ª Vara de Orfãos e Sucessões'))
结果是无:
那么,我怎样才能做到这一点呢
可以使用嵌套的for循环而不是列表执行此操作:
关键是将nome_orgao转换成标准格式,然后对照所有术语进行检查。正如您已经做的那样,
unidecode
将删除所有重音。在末尾添加.lower()
,使所有内容都小写。然后,迭代regras中的每个r和termos中的每个t,并检查t是否在uni_nome_orgao中,或者uni_nome_orgao是否在t中希望有帮助
相关问题 更多 >
编程相关推荐