Python:如何在关键字后提取数字和某些大写字母



我正试图使用Python将单词"Amount"后面的数字和数字后面的货币代码提取到两个单独的列中。如有任何帮助,我们将不胜感激。

退款成功。IBE付款ID 79104467 |交易参考号:73462794 |金额:50.00欧元

Hyperwallet成功退款。交易参考号:48886217 |金额:214.64美元| Hyperwallet支付id:581082-2

我会为使用regex

import re
def listAmounts(s):
return [a for a,b in re.findall('(d+(.d+)?s[A-Z]+)', s)]

(返回由一些数字组成的任何字符串,以及一个带有更多数字的可选点、一个空格和一些大写字母。当然,您可以使用一些变体,在货币前允许更多空格或不允许空格,或者固定点后的位数,或者允许符号等。(

要从给定字符串构造DataFrame,请尝试:

import re
import pandas as pd
s = """
Successful refund. IBE payment ID 79104467 | Transaction-ref: 73462794 | Amount: 50.00 EUR
Successful refund by Hyperwallet. Transaction-ref: 48886217 | Amount: 214.64 USD | Hyperwallet payout id: 581082-2"""
df = pd.DataFrame(
re.findall(r"Amount:s*([d.]+)s*([^s]+)", s),
columns=["Amount", "Currency"],
)
print(df)

打印:

Amount Currency
0   50.00      EUR
1  214.64      USD

不是最好的解决方案,但应该可以使用

to_filter = 'Successful refund. IBE payment ID 79104467 | Transaction-ref: 73462794 | Amount: 50.00 EUR'
to_filter = to_filter.split(' ')
amount = [float(to_filter[to_filter.index('Amount:') + 1]), to_filter[to_filter.index('Amount:') + 2]]
print(amount)

相关内容

最新更新