df = pd.DataFrame(columns=['总订单数','总推送数','推送比','问卷回馈','回馈比']) count = 0 for i in range(5): for message in messages: if "20230612统计" in message.Subject: # 使用正则表达式提取订单数、推送数和回馈数的值 pattern1 = r"总订单数:(\d+)" pattern2 = r"总推送数:(\d+)" pattern3 = r"推送比:(\d+)" pattern4 = r"问卷回馈:(\d+)" pattern5 = r"回馈比:(\d+)" match1 = re.search(pattern1, message.Body) match2 = re.search(pattern2, message.Body) match3 = re.search(pattern3, message.Body) match4 = re.search(pattern4, message.Body) match5 = re.search(pattern5, message.Body) if match1 and match2 and match4 : 总订单数 = match1.group(1) 总推送数 = match2.group(1) 问卷回馈 = match4.group(1) if match3: 推送比 = match3.group(1) else: 推送比 = '' if match5: 回馈比 = match5.group(1) else: 回馈比 = '' print("总订单数::", 总订单数) print("总推送数:", 总推送数) print("推送比", 推送比) print("问卷回馈:", 问卷回馈) print("回馈比", 回馈比) else: print("帅哥") df.loc[count] = [总订单数, 总推送数, 推送比, 问卷回馈, 回馈比] count += 1 if count == 1: break else: continue break 没有打印出邮件中所有的总订单数的值
时间: 2024-02-10 21:27:24 浏览: 79
根据你提供的代码,发现在提取订单数推送数和回馈数的值时,只有在匹配到所有的五个模式时,才打印并添加到 DataFrame 中。这可能会导致在某些邮件中缺少某些模式匹配结果而无法打印。
如果你想要打印出邮件中所有的总订单数的值,即使没有匹配到所有的模式,可以将打印和添加到 DataFrame 的逻辑放到匹配成功的判断之外。以下是修改后的代码示例:
```python
df = pd.DataFrame(columns=['总订单数','总推送数','推送比','问卷回馈','回馈比'])
count = 0
for i in range(5):
for message in messages:
if "20230612统计" in message.Subject:
# 使用正则表达式提取订单数、推送数和回馈数的值
pattern1 = r"总订单数:(\d+)"
pattern2 = r"总推送数:(\d+)"
pattern3 = r"推送比:(\d+)"
pattern4 = r"问卷回馈:(\d+)"
pattern5 = r"回馈比:(\d+)"
match1 = re.search(pattern1, message.Body)
match2 = re.search(pattern2, message.Body)
match3 = re.search(pattern3, message.Body)
match4 = re.search(pattern4, message.Body)
match5 = re.search(pattern5, message.Body)
if match1 and match2 and match4:
总订单数 = match1.group(1)
总推送数 = match2.group(1)
问卷回馈 = match4.group(1)
if match3:
推送比 = match3.group(1)
else:
推送比 = ''
if match5:
回馈比 = match5.group(1)
else:
回馈比 = ''
print("总订单数::", 总订单数)
print("总推送数:", 总推送数)
print("推送比", 推送比)
print("问卷回馈:", 问卷回馈)
print("回馈比", 回馈比)
else:
print("帅哥")
df.loc[count] = [总订单数, 总推送数, 推送比, 问卷回馈, 回馈比]
count += 1
if count == 1:
break
else:
continue
break
df.to_excel(r'C:\Users\bjbk0026\Desktop\统计.xlsx', index=False)
```
在上述代码中,我将打印和添加到 DataFrame 的逻辑移动到匹配成功与否的判断之外。这样无论是否匹配到所有模式,都可以将匹配到的值打印并添加到 DataFrame 中。
希望这次能够解决你的问题!如果还有其他疑问,请随时提问。
阅读全文