Python 使用正则表达式提取带点和逗号的数字
我已经阅读了很多页面,试图解释如何在Python中使用Python 使用正则表达式提取带点和逗号的数字,python,regex,string,python-2.7,extract,Python,Regex,String,Python 2.7,Extract,我已经阅读了很多页面,试图解释如何在Python中使用regex,但我还是一点也不懂。就连那个和那个也帮不了我。我还是有点困惑:P 我有以下字符串: string = "|C195|1|Base de Cálculo ST: 2.608,24 - Valor da ST: 163,66|" 我试图使用以下方法仅提取2.608,24和163,66: st_values = re.findall("\d+[,.]\d+", string) 但是,我的打印st_值的输出是: ['2.608','1
regex
,但我还是一点也不懂。就连那个和那个也帮不了我。我还是有点困惑:P
我有以下字符串:
string = "|C195|1|Base de Cálculo ST: 2.608,24 - Valor da ST: 163,66|"
我试图使用以下方法仅提取2.608,24
和163,66
:
st_values = re.findall("\d+[,.]\d+", string)
但是,我的打印st_值的输出是:
['2.608','163,66']
相反,我希望是这样
['2.608,24','163,66']
我不想要
['195', '1', '2.608,24','163,66']
那么,我如何使用正则表达式参数的字母汤以这种方式提取它们呢?试试这个(这个正则表达式还假设像1,23
这样的字符串是匹配的)
我建议:
\b\d{1,3}(?:\.\d{3})*,\d+\b
这是一个
这是一个:
如果要从最后第二列/字段中提取数字,可以执行以下操作:
In: re.findall(r"[0-9,.]+",string.split('|')[-2])
Out: ['2.608,24', '163,66']
否则,如果您只使用正则表达式,而其他列中有类似的数字,那么您就无法将它们过滤掉。@Tushar-hmm为什么要这样做?它没有OP要求的逗号符号它完全符合我的数据。。真的谢谢@Kamehameha@Kamehameha,看看斯特里比雪夫在被接受的答案中的评论,也许它也会对你有所帮助。你的答案也符合我的数据,但由于他的方式“更干净”,我发现它更容易阅读和理解,但无论如何,谢谢@帕多迪多:但是如果你有2.600.100,34
?有一个-它会失败<代码>\b
是单词边界。如果还希望匹配包含在单词字符中的数字,则可以删除它们。
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))
In: re.findall(r"[0-9,.]+",string.split('|')[-2])
Out: ['2.608,24', '163,66']