gpt4 book ai didi

Python正则表达式匹配特定货币格式

转载 作者:太空宇宙 更新时间:2023-11-03 16:41:33 25 4
gpt4 key购买 nike

我正在尝试在 python 3.4 中编写一个正则表达式,它将从潜在价格的文本文件中获取输入并匹配有效的格式。

要求价格采用 $X.YY 或 $X 格式,其中 X 必须大于 0。

无效格式包括 $0.YY、$.YY、$X.Y、$X.YYY

到目前为止,这就是我所拥有的:

import re
from sys import argv

FILE = 1

file = open(argv[FILE], 'r')
string = file.read()
file.close()

price = re.compile(r""" # beginning of string
(\$ # dollar sign
[1-9] # first digit must be non-zero
\d * ) # followed by 0 or more digits
(\. # optional cent portion
\d {2} # only 2 digits allowed for cents
)? # end of string""", re.X)

valid_prices = price.findall(string)
print(valid_prices)

这是我现在用来测试的文件:

测试.txt

 $34.23 $23 $23.23 $2 $2313443.23 $3422342 $02394 $230.232 $232.2 $05.03

当前输出:

$[('$34', '.23'), ('$23', ''), ('$23', '.23'), ('$2', ''), ('$2313443', '.23'), ('$3422342', ''), ('$230', '.23'), ('$232', '')]

当前匹配 $230.232 和 $232.2,而这些应该被拒绝。

我将美元部分和美分部分分成不同的组,以便稍后进行进一步处理。这就是为什么我的输出是元组列表。

这里的一个问题是我不知道输入文件中将使用什么分隔符(如果有)。

我是正则表达式的新手,非常感谢一些帮助。谢谢你!

最佳答案

如果确实不清楚将使用哪个分隔符,对我来说,只有检查“不是数字和不是点”作为分隔符才有意义:

\$[1-9]\d*(\.\d\d)?(?![\d.])

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

关于Python正则表达式匹配特定货币格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com