那如果我要提取其余几个项目的订单总和并按公式进行计算,例如(项目A*10%)+(项目B*10%)
时间: 2023-11-29 18:04:42 浏览: 25
好的,如果要提取多个项目的订单总和并按照一定的比例进行计算,可以使用字典来存储每个项目的金额和占比,然后根据正则表达式提取相应的信息,最后进行计算。下面是一个示例代码:
```
import re
# 定义正则表达式
project_patterns = {
"项目A": r"项目A: (\d+)元",
"项目B": r"项目B: (\d+)元",
"项目C": r"项目C: (\d+)元"
}
order_pattern = r"订单\d+: (\d+)元,(\w+)"
# 提取项目金额和计算订单总金额
project_totals = {}
order_totals = {}
s = "项目A: 1000元;项目B: 2000元;项目C: 3000元\n"
s += "订单1: 500元,项目B;订单2: 1000元,项目B;订单3: 500元,项目B"
for project, pattern in project_patterns.items():
result = re.search(pattern, s)
if result:
project_total = int(result.group(1))
project_totals[project] = project_total
order_results = re.findall(order_pattern, s)
order_total = sum([int(x[0]) for x in order_results if x[1] == project])
order_totals[project] = order_total
else:
print("未找到{}的金额".format(project))
# 计算比例并输出结果
total_ratio = 0
for project, project_total in project_totals.items():
if project in order_totals:
order_total = order_totals[project]
ratio = order_total / project_total
total_ratio += ratio
print("{}的订单总金额为:{}元,占比为:{:.2%}".format(project, order_total, ratio))
else:
print("未找到{}的订单金额".format(project))
total_price = sum(project_totals.values())
total_order_price = sum(order_totals.values())
final_price = total_order_price / total_ratio if total_ratio else 0
print("订单总金额为:{}元,各项目占比总和为:{:.2%},最终计算金额为:{:.2f}元".format(total_order_price, total_ratio, final_price))
```
上述代码中,我们首先定义了一个`project_patterns`字典,其中包含了每个项目对应的正则表达式。然后使用循环遍历字典,依次提取每个项目的金额和订单金额,并将其存储在`project_totals`和`order_totals`字典中。接着,我们分别计算每个项目的订单金额占项目金额的比例,并将其打印出来。最后,我们计算各项目占比总和、订单总金额和最终计算金额,并将其打印出来。