字符串p处理:如何查找单词如果某个单词存在,则编写字典(正则表达式)

2024-06-16 14:46:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.txt文件,看起来像:

this

正如您所看到的,它是动词之间的几个关系(不关心数字),文件有5000行。在

数据在这里:在下载和使用VerbOcean下:http://demo.patrickpantel.com/demos/verbocean/

我想要的是每段感情的口述,这样我们就可以举个例子

similar-to['anger'] = 'energize' 
happens-before['X'] = 'Y'
stronger-than ['A'] = 'B'

等等。在

所以,到目前为止,我所做的只是完美地为(比)强的关系工作。我该如何扩展它,使它同时适用于所有其他关系?在

^{pr2}$

一种方法是对所有其他关系都采取同样的方式,但我想这不是一件明智的事。有什么想法吗? 我想要的是每段感情的口述,这样我们就可以说:

similar-to['anger'] = 'energize' 
happens-before['X'] = 'Y'
stronger-than ['A'] = 'B'

我是python新手,任何帮助都将不胜感激。在


Tags: 文件totxt关系动词similarthanbefore
1条回答
网友
1楼 · 发布于 2024-06-16 14:46:15

这可以使用正则表达式来完成:

import re
regexp = re.compile(r'^([^\[\]\s]+)\s*\[([^\[\]\s]+)\]\s*([^\[\]\s]+)\s*.*$', re.MULTILINE)
  • ^:(在开头)意思是从行首开始查找。在
  • $:(在末尾)表示表达式应该在行的和处结束。在
  • [^\[\]\s]+:捕获不是[]或空格的所有字符。^表示不捕获方括号内的以下字符。在
  • 我们用()封装上述表达式,将其标记为使用m.groups()捕获的组。因为我们想得到两个动词及其关系,所以我们用()来封装这三个动词。在
  • 在这些组之间,我们使用\s*捕获所有空格,并使用.*捕获行的其余部分。由于它们没有用()封装,因此最终都将被忽略。在

例如:

^{pr2}$

输出:

{'happens-before': {'invate': 'annex'},
 'opposite-of': {'annex': 'cede'},
 'similar': {'annex': 'invade'},
 'stronger-than': {'annex': 'occupy'}}

然后要得到动词'annex'的关系'similar',请使用:

relationships['similar']['annex']

它将返回:'occupy'

相关问题 更多 >