如何从以下 api 响应中获取特定对
How to get specific pair from the following api response
我从 api 收到的回复格式如下:
"NetRange: 185.0.0.0 - 185.255.255.255 CIDR: 185.0.0.0/8 NetName: RIPE-185 NetHandle: NET-185-0-0-0-1 Parent: () NetType: Allocated to RIPE NCC OriginAS: Organization: RIPE Network Coordination Centre (RIPE) RegDate: 2011-01-04 Updated: 2011-02-08 Comment: These addresses have been further assigned to users in Comment: the RIPE NCC region. Contact information can be found in Comment: the RIPE database at http://www.ripe.net/whois Ref: https://rdap.arin.net/registry/ip/185.0.0.0 ResourceLink: https://apps.db.ripe.net/search/query.html ResourceLink: whois.ripe.net **OrgName: RIPE Network Coordination Centre** OrgId: RIPE Address: P.O. Box 10096 City: Amsterdam StateProv: PostalCode: 1001EB Country: NL RegDate: Updated: 2013-07-29 Ref: https://rdap.arin.net/registry/entity/RIPE ReferralServe "
但我只需要突出显示的值对。 python 中的相同格式究竟应该如何完成?
我正在使用 python 3.
您可以使用 re
正则表达式模块执行此操作:
import re
#assume that resp is response from API
resp = "NetRange: 185.0.0.0 - 185.255.255.255 CIDR: 185.0.0.0/8 NetName: RIPE-185 NetHandle: NET-185-0-0-0-1 Parent: () NetType: Allocated to RIPE NCC OriginAS: Organization: RIPE Network Coordination Centre (RIPE) RegDate: 2011-01-04 Updated: 2011-02-08 Comment: These addresses have been further assigned to users in Comment: the RIPE NCC region. Contact information can be found in Comment: the RIPE database at http://www.ripe.net/whois Ref: https://rdap.arin.net/registry/ip/185.0.0.0 ResourceLink: https://apps.db.ripe.net/search/query.html ResourceLink: whois.ripe.net OrgName: RIPE Network Coordination Centre OrgId: RIPE Address: P.O. Box 10096 City: Amsterdam StateProv: PostalCode: 1001EB Country: NL RegDate: Updated: 2013-07-29 Ref: https://rdap.arin.net/registry/entity/RIPE ReferralServe "
regex = r"OrgName:\s(.+?)\sOrgId"
orgName = re.findall(regex, resp)[0]
print(orgName) #RIPE Network Coordination Centre
这是您获取的数据的简单解析器:
def parse_reply(data):
tmp = []
result = {}
kvdata = data.split()
key = kvdata[0]
for e in kvdata[1:]:
if e.endswith(':'):
result[key] = " ".join(tmp)
key = e[:-1]
tmp.clear()
else:
tmp.append(e)
return result
rep = parse_reply(data)
print(rep['OrgName'])
我从 api 收到的回复格式如下:
"NetRange: 185.0.0.0 - 185.255.255.255 CIDR: 185.0.0.0/8 NetName: RIPE-185 NetHandle: NET-185-0-0-0-1 Parent: () NetType: Allocated to RIPE NCC OriginAS: Organization: RIPE Network Coordination Centre (RIPE) RegDate: 2011-01-04 Updated: 2011-02-08 Comment: These addresses have been further assigned to users in Comment: the RIPE NCC region. Contact information can be found in Comment: the RIPE database at http://www.ripe.net/whois Ref: https://rdap.arin.net/registry/ip/185.0.0.0 ResourceLink: https://apps.db.ripe.net/search/query.html ResourceLink: whois.ripe.net **OrgName: RIPE Network Coordination Centre** OrgId: RIPE Address: P.O. Box 10096 City: Amsterdam StateProv: PostalCode: 1001EB Country: NL RegDate: Updated: 2013-07-29 Ref: https://rdap.arin.net/registry/entity/RIPE ReferralServe "
但我只需要突出显示的值对。 python 中的相同格式究竟应该如何完成? 我正在使用 python 3.
您可以使用 re
正则表达式模块执行此操作:
import re
#assume that resp is response from API
resp = "NetRange: 185.0.0.0 - 185.255.255.255 CIDR: 185.0.0.0/8 NetName: RIPE-185 NetHandle: NET-185-0-0-0-1 Parent: () NetType: Allocated to RIPE NCC OriginAS: Organization: RIPE Network Coordination Centre (RIPE) RegDate: 2011-01-04 Updated: 2011-02-08 Comment: These addresses have been further assigned to users in Comment: the RIPE NCC region. Contact information can be found in Comment: the RIPE database at http://www.ripe.net/whois Ref: https://rdap.arin.net/registry/ip/185.0.0.0 ResourceLink: https://apps.db.ripe.net/search/query.html ResourceLink: whois.ripe.net OrgName: RIPE Network Coordination Centre OrgId: RIPE Address: P.O. Box 10096 City: Amsterdam StateProv: PostalCode: 1001EB Country: NL RegDate: Updated: 2013-07-29 Ref: https://rdap.arin.net/registry/entity/RIPE ReferralServe "
regex = r"OrgName:\s(.+?)\sOrgId"
orgName = re.findall(regex, resp)[0]
print(orgName) #RIPE Network Coordination Centre
这是您获取的数据的简单解析器:
def parse_reply(data):
tmp = []
result = {}
kvdata = data.split()
key = kvdata[0]
for e in kvdata[1:]:
if e.endswith(':'):
result[key] = " ".join(tmp)
key = e[:-1]
tmp.clear()
else:
tmp.append(e)
return result
rep = parse_reply(data)
print(rep['OrgName'])