Skip to main content
 首页 » 编程设计

Python正则表达式从科学论文中提取数字

2024年11月24日30kuangbin

我不知道我是否将此张贴在正确的位置,但我希望我能从某人那里得到一些帮助。

我是一名心理学家,在编程方面不是很熟练。尽管如此,我正在开发一种使用正则表达式从 PDF 中提取统计值的工具。

出现了一个我自己无法解决的问题。

我需要从以下项中提取数字:

'F(1,110) = 15.18' 

我需要一个正则表达式来提取括号中的两个数字和一个正则表达式来提取“=”之后的数字。 注意:括号中的数字可以更改,并且每个字符串都不同。

谁能帮帮我?

这是我目前尝试过的:

r'(F(\d+.\d+))', 
r'(F([:digit:], [:digit:]) = \d+.\d+)' 

未检测到任何值。有什么建议吗?

请您参考如下方法:

您可以使用 3 个捕获组来转义括号以按字面匹配它们。

如果您还可以使用单个模式而不是 2 个单独的模式:

F\((\d+),(\d+)\) = (\d+(?:\.\d+)?) 
  • F 字面匹配
  • \( 匹配 (
  • (\d+),(\d+) 在一组中捕获 2 次 1+ 个数字,中间用逗号分隔
  • \)匹配)
  • = 匹配一个被两个空格包围的等号
  • (\d+(?:\.\d+)?) 捕获一组匹配 1+ 位数字的可选小数部分

如果最后一部分应包含小数,则可以使用 (\d+\.\d+)。

Regex demo | Python demo

例如

import re 
 
regex = r"F\((\d+),(\d+)\) = (\d+(?:\.\d+)?)" 
s = "F(1,110) = 15.18" 
print(re.findall(regex, s)) 

结果

[('1', '110', '15.18')]