繁体   English   中英

使用正则表达式提取带点和逗号的数字

[英]Extracting a number with dot and comma using regex

我读过很多页面,试图向我解释如何将regex用于Python,但我还是regex 甚至regex Wikire文档都根本无法帮助我。 我还是有点困惑:P

我有以下字符串:

string = "|C195|1|Base de Cálculo ST: 2.608,24 - Valor da ST: 163,66|"

我正在尝试使用以下命令仅提取2.608,24163,66

st_values = re.findall("\d+[,.]\d+", string)

但是,我的print st_values的输出是:

['2.608','163,66']

相反,我希望它是

['2.608,24','163,66']

我不要

['195', '1', '2.608,24','163,66']

那么,如何使用正则表达式参数的字母汤来提取它们呢?

我建议:

\b\d{1,3}(?:\.\d{3})*,\d+\b

这是一个演示

这是一个IDEONE代码演示

import re
p = re.compile(r'\b\d{1,3}(?:\.\d{3})*,\d+\b')
test_str = "|C195|1|Base de Cálculo ST: 2.608,24 - Valor da ST: 2.608.234,24 12.608.234,24\n  163,66|\nd2.608.234,24\n2.60d8.23d4,24"
print(re.findall(p, test_str))

试试这个(此正则表达式还假设匹配1,23字符串。)

>>> re.findall("\d+(?:\.\d+)?,\d+", string)
['2.608,24', '163,66']

正则表达式演示和说明

如果要从倒数第二列/字段中提取数字,则可以执行以下操作:

 In: re.findall(r"[0-9,.]+",string.split('|')[-2])      
Out: ['2.608,24', '163,66']

否则,如果仅使用正则表达式执行此操作,并且其他列中存在相似的数字,则很难将其过滤掉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM