我搜索过并搜索过,但我无法解决这个问题。下面是我从Web服务API获取的JSON数据:
{
"total_count": 673,
"items": [
{
"hap": "delivered",
"message": "Delivered: no-reply@example.com \u2192 jon.doe@gmail.com 'Some Email subject'",
"type": "info",
"created_at": "Wed, 19 Aug 2015 18:38:54 GMT",
"message_id": "20150819183853.13720.31771@example.com"
},
{
"hap": "accepted",
"message": "Accepted: no-reply@example.com \u2192 jon.doe@gmail.com 'Subject of this email here'",
"type": "info",
"created_at": "Wed, 19 Aug 2015 18:38:53 GMT",
"message_id": "20150819183853.13720.31771@example.com"
},
{
"hap": "delivered",
"message": "Delivered: no-reply@example.com \u2192 jane.doe@gmail.com 'Subject Line here'",
"type": "info",
"created_at": "Wed, 19 Aug 2015 18:37:50 GMT",
"message_id": "20150819183749.13738.20180@example.com"
},
我面临的挑战是,我正在尝试在" \ u2192"之后的TO电子邮件地址中搜索"消息":块。在"消息":位置。
我创建了这个python脚本,它会转储" message"中的所有条目:但我无法使用特定的电子邮件地址对其进行过滤。
import requests, json
print("Connecting to the URL...")
r = requests.get("https://api:key-12345@api.mailgun.net/v3/example.com/log")
j = r.json()
for data in j['items']:
print data['message']
答案 0 :(得分:1)
其中任何一个"应该"工作
由于您已经知道电子邮件地址,因此您只需在字符串中搜索确切的电子邮件地址即可。这里有几个选择。你可以使用正则表达式(可能是矫枉过正,因为这不是一个模式,而是一个已知的字符串)。您也可以在字符串中搜索已知的电子邮件地址。
您可以确定是否应在两种情况下都使用基于其布尔值的消息。
正则表达式
https://docs.python.org/3.5/library/re.html#match-objects
import re
email_address = "email_address_you_know@somewhere.com"
for data in j['items']:
match = re.search(email_address, data['message'])
if match:
print data['message']
在邮件中搜索电子邮件地址字符串
email_address = "email_address_you_know@somewhere.com"
for data in j['items']:
if email_address in data['message']:
print data['message']
答案 1 :(得分:0)
尝试:
re.findall("[^@ ]+@[^@]+\.[^@ ]+", data['message'].split("\u2192")[1])[0]
首先,我将data['message']
分成两个字符\u2192
而不是第二部分。我尝试在第二部分找到所有电子邮件,并且只选择第一部分,因为它正是您要找的。 p>
答案 2 :(得分:0)
使用json.loads
解决此问题。
>>> json.loads('"Delivered: no-reply@example.com \u2192 jane.doe@gmail.com"')
'Delivered: no-reply@example.com → jane.doe@gmail.com'