使用文本中的正则表达式提取金额[复制]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

我是正则表达式的新手,我想从给定的文本中提取金额,这是我的代码:

import pandas as pd
import re
msg='He was paid USD 2,000.00 & USD 500 on 19-02-2018 at 08:15:24.'

pattern = re.compile(r'USD\s+(\d+)')

matches = pattern.finditer(msg)


for match in matches:
    print(match)

我希望输出为2000和500,但目前我的输出为2美元。请帮忙。注意:原始邮件很长,但所有金额都在它们之前。

python regex
2个回答
1
投票

这将是正确的模式:r'USD\s+([\d,\.]+)'

>>> pattern = re.compile(r'USD\s+([\d,\.]+)')
>>> matches = pattern.finditer(msg)
>>> for match in matches:
...     print(match)
...
<re.Match object; span=(12, 24), match='USD 2,000.00'>
<re.Match object; span=(27, 34), match='USD 500'>

你需要在正则表达式中包含逗号(,)和点(.)。 \d将仅匹配数字。

从最终比赛中删除后,您的工作就完成了。


0
投票

试试这个吧。它会工作。

USD\s+(\d+)(,*)(\d+)
© www.soinside.com 2019 - 2024. All rights reserved.