Python 从文本中的缩写中查找首字母
我有一个首字母缩略词列表,我想做的是在文本中找到它们的定义,然后把它们放到字典中。我已经做了一个代码,但是硬编码,并没有产生想要的结果。我希望我的最终结果是这样的Python 从文本中的缩写中查找首字母,python,python-3.x,string,list,dictionary,Python,Python 3.x,String,List,Dictionary,我有一个首字母缩略词列表,我想做的是在文本中找到它们的定义,然后把它们放到字典中。我已经做了一个代码,但是硬编码,并没有产生想要的结果。我希望我的最终结果是这样的 {'NBA': ' National Basketball Association', 'NCAA': 'National Collegiate Athletic Association'} 代码: 对于如何在pythonic wat中获得预期结果的任何帮助,我们将不胜感激。下面是一个简单的示例,说明如何应用正则表达式: impo
{'NBA': ' National Basketball Association', 'NCAA': 'National Collegiate Athletic Association'}
代码:
对于如何在pythonic wat中获得预期结果的任何帮助,我们将不胜感激。下面是一个简单的示例,说明如何应用正则表达式:
import re
s = " NBA comes from the words National Basketball Association is a men's professional basketball league in North America, composed of 30 teams. On the other hand NCAA stands for The National Collegiate Athletic Association"
acro = ['NBA', 'NCAA', 'STFU']
patterns = [f'({a}).+?({" ".join(c + "[a-z]+" for c in a)})(?: |$)' for a in acro]
# python 3.8
result = dict(m.groups() for p in patterns if (m := re.search(p, s)))
# lower versions
result = dict(m.groups() for m in (re.search(p, s) for p in patterns) if m)
是将为'NCAA'
生成的正则表达式示例:
(NCAA).+(N[a-z]+ C[a-z]+ A[a-z]+ A[a-z]+)(?: |$)
您可以在那里应用正则表达式。是否希望代码理解任意文本中的定义?如果是这样的话,那么这是一个ML\DS主题,查找命名实体识别,但这并不是那么容易。^是的,我知道。你认为只有NLP才能做到吗?谢谢。但我无法测试它,因为我现在正在使用这个新操作符处理3.8。@hipocampus777,我为较旧的python版本添加了选项。谢谢。它适用于缩写在完整形式之前的情况,而不是相反,如果完整形式在缩写之前。@hipocampus777,是的,这就是为什么我说这是一个简单的例子。主要的想法是分享如何应用正则表达式来解决这个任务。您应该改进正则表达式,但其主要思想不会改变。
(NCAA).+(N[a-z]+ C[a-z]+ A[a-z]+ A[a-z]+)(?: |$)