我正在尝试仅提取有效的百分比信息,并使用 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 的小数值,这是无效的百分比值。
关于python - 使用正则表达式从 python 中的文本中仅提取百分比信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532747/