最终需求结果: 菜品名,数量,价格
结果展示:
菜名是 香辣牛肉面-小碗 数量是 3 价格是 36.9
菜名是 周末专享-0.99元荷包蛋(加价购) 数量是 2 价格是 2.99
菜名是 香辣牛肉面(大) 数量是 4 价格是 38.9
代码:
import pandas as pd
import re
data = pd.read_excel("外卖订单.xlsx")
order_detail = data["order_detail"]
name_num_price = re.compile("(.*?)_(\d+)\*(\d+.\d+)") #定义正则匹配规则
# for each_detail in order_detail:
# print(each_detail)
all = []
for each_detail in order_detail:
for i in re.split(r'[!!+]', each_detail): # 正则分开字符串
all1 = name_num_price.findall(i) # 找到符合条件字符串
if all1:
if float(all1[0][2]):
all1[0] = list(all1[0]) # 将元组转化为列表
all1[0][1] = int(all1[0][1]) # 将商品数量转为int整数类型
all1[0][2] = float(all1[0][2]) # 将商品价格转为float浮点类型
print(all1[0])
for j in all: # 遍历已经加入的数组
if all1[0][0] == j[0]: # 如果已经存在菜名则数量加1退出循环
j[1] += 1
break
else:
all.append(all1[0]) # 否则将商品信息添加进数组all
for i in all:
print("菜名是", i[0], '数量是', i[1], '价格是', i[2])