python-3.x 从字符串提取数字信息(regex)[重复]

gcuhipw9  于 2023-02-26  发布在  Python
关注(0)|答案(1)|浏览(123)
    • 此问题在此处已有答案**:

Extract part of a regex match(11个答案)
3天前关闭。
我试图从一个句子中提取特定的值,以便将此信息添加到Pandas数据框中。文本如下所示:

“Catherine has 3 dogs: 2 are black”

Pandas数据框中的信息应该是狗的数量(3)和特定颜色的狗的数量(2)。

#_dogs black
3       2

我尝试过如下使用regex:

re.search(“Catherine has (\d+) dogs: (\d+) are black”, sentence).

但是它没有正确地提取信息,你能告诉我我做错了什么并解释一下吗?

mf98qq94

mf98qq941#

您使用的方法确实正确地提取了数字,但是re.search将它们作为Match对象返回。为了使用该对象,您必须获得相应的组:

sentence = "Catherine has 3 dogs: 2 are black"
r = re.search("Catherine has (\d+) dogs: (\d+) are black", sentence)
print(r.group(1)) # prints 3
print(r.group(2)) # prints 2

但是,你也可以使用re.findall,它返回一个元组列表,我假设给出的句子是一个例子,所以我将使用一个更通用的版本:

r = re.findall("\D+(\d+)\D+(\d+)", sentence)
print(r) # prints [('3','2')]

\D匹配任何非数字。

相关问题