Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文本中的缩写中查找首字母_Python_Python 3.x_String_List_Dictionary - Fatal编程技术网

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]+)(?: |$)