使用正则表达式从文本中提取金额

时间:2018-09-09 10:49:37

标签: python regex

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

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美元。请帮助。 注意:原始消息很长,但是所有金额前面都有美元。

2 个答案:

答案 0 :(得分: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仅匹配数字。

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

答案 1 :(得分:0)

尝试这个。它将起作用。

USD\s+(\d+)(,*)(\d+)
相关问题