Python中有没有一种方法可以在不显式创建匹配对象的情况下访问匹配组(或美化以下示例的另一种方法)?
这是一个示例,以阐明我对此问题的动机:
遵循Perl代码
if ($statement =~ /I love (\w+)/) {
print "He loves $1\n";
}
elsif ($statement =~ /Ich liebe (\w+)/) {
print "Er liebt $1\n";
}
elsif ($statement =~ /Je t\'aime (\w+)/) {
print "Il aime $1\n";
}
翻译成Python
m = re.search("I love (\w+)", statement)
if m:
print "He loves",m.group(1)
else:
m = re.search("Ich liebe (\w+)", statement)
if m:
print "Er liebt",m.group(1)
else:
m = re.search("Je t'aime (\w+)", statement)
if m:
print "Il aime",m.group(1)
看起来很尴尬(如果为其他级联,则匹配对象创建)。
您可以创建一个小类,该类返回调用match的布尔结果, 并 保留匹配的组以供后续检索:
import re
class REMatcher(object):
def __init__(self, matchstring):
self.matchstring = matchstring
def match(self,regexp):
self.rematch = re.match(regexp, self.matchstring)
return bool(self.rematch)
def group(self,i):
return self.rematch.group(i)
for statement in ("I love Mary",
"Ich liebe Margot",
"Je t'aime Marie",
"Te amo Maria"):
m = REMatcher(statement)
if m.match(r"I love (\w+)"):
print "He loves",m.group(1)
elif m.match(r"Ich liebe (\w+)"):
print "Er liebt",m.group(1)
elif m.match(r"Je t'aime (\w+)"):
print "Il aime",m.group(1)
else:
print "???"
Python 3 print作为函数的更新,以及Python 3.8赋值表达式-现在不需要REMatcher类:
import re
for statement in ("I love Mary",
"Ich liebe Margot",
"Je t'aime Marie",
"Te amo Maria"):
if m := re.match(r"I love (\w+)", statement):
print("He loves", m.group(1))
elif m := re.match(r"Ich liebe (\w+)", statement):
print("Er liebt", m.group(1))
elif m := re.match(r"Je t'aime (\w+)", statement):
print("Il aime", m.group(1))
else:
print()
本文向大家介绍在Python中删除匹配的元组,包括了在Python中删除匹配的元组的使用技巧和注意事项,需要的朋友参考一下 当需要从两个元组列表中删除匹配的元组时,可以使用列表推导。 列表可用于存储异构值(即,任何数据类型的数据,例如整数,浮点数,字符串等)。 元组列表基本上包含包含在列表中的元组。 列表理解是迭代列表并对其执行操作的一种快捷方式。 以下是相同的演示- 示例 输出结果 解释 定义了
问题内容: 我有以下输入, 我想提取所有输入, 除了 包含“ ”的行和包含单个(点)的最后一行。也就是说,我想提取以下内容 我尝试了以下方法 但它不起作用,因为它不会产生任何输出。 问题答案: 实际操作: 别忘了负前瞻,否则您将无法获得任何匹配;-)
问题内容: 我有类似的东西 商店 结束行像1商店..我想匹配,它使用python正则表达式。 我尝试了类似的方法, 但是没有用。 编辑:添加代码,我试过 请帮助。 谢谢吉乔 问题答案: 或多或少直接回复您的评论 尝试这个 解决方案是使用,而不是使用后者,因为后者试图将整个字符串与regexp匹配,而前者只是试图在字符串内部查找与表达式匹配的子字符串。
问题内容: 我有一个要从中提取3组的字符串: 月名称可能包含非ASCII字符,因此对我不起作用: 我可以使用,但它匹配数字和下划线: 我尝试使用[:alpha:],但是不起作用: 如果我能以某种方式匹配而没有,但我不知道如何。即使我知道如何做到这一点,是否也有像Python中那样可用的现成快捷方式? 问题答案: 您可以构造一个新的角色类: 代替。翻译成英文,意思是“任何不是非字母数字字符(与相同)
本文向大家介绍Python中的DI字符串匹配,包括了Python中的DI字符串匹配的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个仅包含“ I”(表示增加)或“ D”(表示减少)的字符串S,令N = S的大小。我们必须返回[0,1,... ,N]使得对于范围0,...,N-1中的所有i- 如果S [i]为“ I”,则A [i] <A [i + 1] 否则,当S [i]为“ D”时,则A [
问题内容: 我试图模糊匹配两个csv文件,每个文件包含一列名称,它们相似但不相同。 到目前为止,我的代码如下: 输出如下: 该脚本工作正常。输出是预期的。但是我所寻找的只是最佳的匹配。 因此,我需要基于第2列中的最大值,以某种方式删除第1列中的重复名称。这应该相当简单,但是我似乎无法弄清楚。任何帮助,将不胜感激。 问题答案: Fuzzywuzzy会以反向排序的顺序返回列表,最佳匹配排在最前面。 因