Skip to main content
 首页 » 编程设计

python之使用正则表达式从 python 中的文本中仅提取百分比信息

2025年04月02日38cyq1162

我正在尝试仅提取有效的百分比信息,并使用 Python 中的正则表达式从字符串中消除任何不正确的表示形式。该功能应该像这样工作, 对于,

0-100%  = TRUE 
0.12% = TRUE 
23.1245467% = TRUE 
9999% = FALSE 
8937.2435% = FALSE 
7.% = FALSE 

我检查了堆栈溢出中的一些解决方案,它们只提取了 0-100%。我尝试了以下解决方案,

('(\s100|[123456789][0-9]|[0-9])(\.\d+)+%') 
'(\s100|\s\d{1,2})(\.\d+)+%' 
'(\s100|\s\d[0-99])(\.\d+)+%' 

所有这些都适用于除 0-99%(给出 FALSE)和 12411.23526%(给出 TRUE)之外的所有其他可能性。空格的原因是我只想提取两位数。

请您参考如下方法:

想通了。问题出在 '(\.\d+)+' 表达式中的 '+' 而它应该是 '(\.\d+)*' 。第一个表达式期望任何两位数的百分比值都具有小数值,而第二个表达式则没有。我的最终版本如下。

'\s(100|(\d{1,2}(\.\d+)*))%'  

对于句子开头的百分比值,您可以将 \s 替换为 $。此外,我的问题部分中的版本接受 100 的小数值,这是无效的百分比值。