从Python中的字符串中提取特定的货币金额

2024-10-02 04:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用具有以下表格的货币(列表)提取价格:

  • 1.10美元
  • 110欧元
  • 1.10欧元

  • 1美元

  • 18欧元
  • 1欧元
  • 5美元

  • 1.10美元

  • 110欧元
  • 1.10欧元
  • 1.99美元
  • 1.99美元

  • 1.10欧元

  • 1.99欧元
  • 10欧元

  • 1.10欧元

  • 1.99欧元
  • 10欧元

  • 1.10美元

  • 1.99美元
  • 10美元

我试过这个python函数关于芬德尔(图案、字符串) 带正则表达式

(?:[\£\$\€]{1}[,\d]+.?\d*)

https://regex101.com/r/X5SPDK/1

但我没有得到预期的结果


Tags: 函数字符串httpscom列表货币价格表格
1条回答
网友
1楼 · 发布于 2024-10-02 04:28:44

如果不进行验证,则此表达式可能更接近您的想法:

[£$€]\s*[.,\d]+|[.,\d]+\s*[£$€]|(?:Eur|dollars?)\s*[.,\d]+|[.,\d]+\s*(?:Eur|dollars?)

它将无法验证。如果您想捕获数字,还可以添加捕获组。你知道吗

测试

import re

regex = r"[£$€]\s*[.,\d]+|[.,\d]+\s*[£$€]|(?:Eur|dollars?)\s*[.,\d]+|[.,\d]+\s*(?:Eur|dollars?)"

test_str ="""
I bought a car $12,250,000 it was expensive 
that thing was £14,500,123.125521 dollas 
afsaf£120.25sfsafsa 
$ 1.10
€ 1,10
1,10 €

$ 1

€ 18
1€
5$

$1.10

€1,10
1,10€
1.99$
1,99$

Eur 1.10

Eur 1,99
Eur 10

Eur1.10

Eur1,99
Eur10

1.10 dollar

1,99 dollar
10 dollar


"""

print(re.findall(regex, test_str, re.I))

输出

['$12,250,000', '£14,500,123.125521', '£120.25', '$ 1.10', '€ 1,10', '1,10 €', '$ 1', '€ 18', '1€', '5$', '$1.10', '€1,10', '1,10€', '1.99$', '1,99$', 'Eur 1.10', 'Eur 1,99', 'Eur 10', 'Eur1.10', 'Eur1,99', 'Eur10', '1.10 dollar', '1,99 dollar', '10 dollar']

If you wish to explore/simplify/modify the expression, it's been explained on the top right panel of regex101.com. If you'd like, you can also watch in this link, how it would match against some sample inputs.


正则表达式电路

jex.im可视化正则表达式:

enter image description here

相关问题 更多 >

    热门问题