python - Python 正则表达式不适用于 Gmail 正文
问题描述
我正在尝试使用 python 正则表达式从 GMAIL 电子邮件正文中提取姓名、电话号码和电子邮件,Zapier 一直说找不到结果。
这是电子邮件的正文:
*****************************************************************
You received a new message from your online store's contact form.
*****************************************************************
Name:
-----
James Bacon
Phone:
------
3171234567
Email:
------
jamesb1234@gmail.com
Intentions:
-----------
my family
这是我的正则表达式:
Name:\n-----\n(.*)\n
Regex101.com 说它找到了匹配项,但 Zapier 一直说没有找到结果。有任何想法吗?
解决方案
使用模式(Name|Phone|Email):.*?\n([^\n\-]+)\n(?=^.*?:)
(regex101 链接):
data = '''*****************************************************************
You received a new message from your online store's contact form.
*****************************************************************
Name:
-----
James Bacon
Phone:
------
3171234567
Email:
------
jamesb1234@gmail.com
Intentions:
-----------
my family'''
import re
name = re.findall(r'Name:.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M)
phone = re.findall(r'Phone:.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M)
email = re.findall(r'Email:.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M)
print(name)
print(phone)
print(email)
印刷:
['James Bacon']
['3171234567']
['jamesb1234@gmail.com']
或一行:
g = re.findall(r'(Name|Phone|Email):.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M)
print(g)
印刷:
[('Name', 'James Bacon'), ('Phone', '3171234567'), ('Email', 'jamesb1234@gmail.com')]
这可以喂给dict
:
d = dict(re.findall(r'(Name|Phone|Email):.*?\n([^\n\-]+)\n(?=^.*?:)', data, flags=re.DOTALL|re.M))
print(d)
印刷:
{'Name': 'James Bacon', 'Phone': '3171234567', 'Email': 'jamesb1234@gmail.com'}
推荐阅读
- php - 如何更改此原始语句以执行相反的操作
- python - after_cancel 在 python tkinter 中不起作用
- sharepoint - 指向 SharePoint 2019 文档集的 Word 超链接不起作用
- pandas - 使用 pyarrow 上传将 CSV 从流中写入 HDFS
- adfs - MVC 4 Web 应用程序使用 ADFS 对来自不同组织的用户进行身份验证
- python - Azure 服务总线函数重试尝试除外
- reactjs - 使用 docker 构建反应应用程序,同时在运行 npm install 时出错
- javascript - 如何使用与 JavaScript 匹配的 user_id 从 Firebase 获取数据
- mysql - MySQL比较查询性能
- python - 如何检查 df1 行与另一个 df2 列的所有单行以检查数据框中是否相同