gpt4 book ai didi

用于简单问题的 Python 正则表达式

转载 作者:行者123 更新时间:2023-12-01 05:44:17 26 4
gpt4 key购买 nike

我希望让用户问一个简单的问题,这样我就可以从输入的字符串中提取一些标准元素。

要输入的字符串示例:

  • 《黑暗骑士》的导演是谁?
  • 中国的首都是哪里?
  • 美国总统是谁?

正如你所看到的,有时是“谁”,有时是“什么”。我很可能正在寻找“|”运算符(operator)。我需要从这些字符串中提取两件事。 “the”之后和“of”之前的单词,以及“of”之后的单词。

例如:

第一句话:我希望提取“director”并将其放入名为Relation的变量中,并提取“The Dark Knight”并将其放置在名为 Concept 的变量中。

期望的输出:

RelationVar = "director"
ConceptVar = "The Dark Knight"

第二句话:我希望提取“资本”,将其分配给变量“Relation”......并提取“中国”并将其放入变量中“概念”。

RelationVar = "capital"
ConceptVar = "China"

关于如何使用 re.match 函数有什么想法吗?或者任何其他方法?

最佳答案

您是正确的,您想使用 | 来表示谁/什么。正则表达式的其余部分非常简单,组名称是为了清晰起见,但您可以使用 r"(?:Who|What) is the (.+) of (.+)[?]" 相反。

>>> r = r"(?:Who|What) is the (?P<RelationVar>.+) of (?P<ConceptVar>.+)[?]"
>>> l = ['Who is the director of The Dark Knight?', 'What is the capital of China?', 'Who is the president of USA?']
>>> [re.match(r, i).groupdict() for i in l]
[{'RelationVar': 'director', 'ConceptVar': 'The Dark Knight'}, {'RelationVar': 'capital', 'ConceptVar': 'China'}, {'RelationVar': 'president', 'ConceptVar': 'USA'}]

如果您还想捕获问题是否使用了 who 或 what,请将 (?:Who|What) 更改为 (Who|What)

实际上提取数据并将其分配给变量非常简单:

>>> m = re.match(r, "What is the capital of China?")
>>> d = m.groupdict()
>>> relation_var = d["RelationVar"]
>>> concept_var = d["ConceptVar"]
>>> relation_var
'capital'
>>> concept_var
'China'

关于用于简单问题的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16660183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com