gpt4 book ai didi

python - 在两组交替出现的字符串之间找到字符串

转载 作者:行者123 更新时间:2023-12-04 13:34:03 24 4
gpt4 key购买 nike

我有一些字符串看起来像:

str1="Quantity and price: 120 units;the total amount:12000.00"
str2="Quantity:100, amount:10000.00"
str3="Quantity:100, price: 10000 USD"
str4="Parcel A: Quantity:100, amount:$10000.00,Parcel B: Quantity:90, amount:$9000.00"
strlist=[str1,str2,str3,str4]
我想匹配前 3 个字符串中的 12000 美元、10000 美元、10000 美元以及最后一个字符串中的 10000 美元和 9000.00 美元。但是,在第一个字符串中同时包含“价格”和“数量”。我认为通过使用“|”正则表达式会从左到右搜索,所以我希望正则表达式首先查看“金额”,如果未显示,则查找“价格”。我尝试了以下代码:
amount_p = re.compile(r'(?:amount|price):(.*?)(?:USD|\.00)') 
for i in strlist:
amount=re.findall(amount_p,i)
print(amount)
[' 120 units;the total amount:$12000']
['10000']
[' 10000 ']
['$10000', '$9000']
不知何故,正则表达式忽略了“金额”,只在第一个字符串中查找“价格”。然后我尝试了以下操作:
amount_p = re.compile(r'.*(?:amount|price):(.*?)(?:USD|\.00)') 
这给了我
['12000']
['10000']
[' 10000 ']
['$9000']
在这种情况下,正则表达式只匹配最后一个字符串中的 $9000 而忽略 $10000。所以我的问题是 .* 在开始时的功能是什么,无论如何可以解决我的问题?查找数字不起作用,因为在我的实际数据中,一个文本中有许多其他数字。
谢谢大家!!!!

最佳答案

第一个声明:

amount_p = re.compile(r'(?:amount|price):(.*?)(?:USD|\.00)')
您没有按照您的意图对字符串进行正确分组(我相信您打算按“:”分组),因此您仍然让字符串作为一个存在。你只能在 str2 和 str3 中得到你的数字,因为 '.USD' and '.00'来救你了。
用第二个语句:
amount_p = re.compile(r'.*(?:amount|price):(.*?)(?:USD|\.00)')
您可以使用 ':' 正确拆分字符串。因此, str1 one 然后看起来像:

Portion1: "Quantity and price"andPortion2: "120 units;the total amount:12000.00"


所以你能够提取你的值(value)。
您可以将其视为执行以下操作:
strlist=[str1.split(';')[1],str2,str3,str4]
当与您的第一个模式结合使用时,结果与第二个相同
引用: https://www.tutorialspoint.com/python/python_reg_expressions.htm

关于python - 在两组交替出现的字符串之间找到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63300525/

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