我是正则表达式的新手,我想从给定的文本中提取金额,这是我的代码:
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美元。请帮助。 注意:原始消息很长,但是所有金额前面都有美元。
答案 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+)