【问题标题】:Obtaining specific part of a json response [duplicate]获取json响应的特定部分[重复]
【发布时间】:2022-01-10 15:14:37
【问题描述】:

所以我有以下 json 数据:

'{"city":"Guarulhos","bot-origin":null,"campaign-source":"attendance bot","lastState":"errorBob","main-installation-date":null, "userid":"c0405312-d97c-4b58-9192-11152c1ee621@tunnel.msging.net","full-name":"Magda dos Santos Silva","alternative-installation-date":null,"chosen-product" :"Internet","bank":null,"postalcode":"07013100","due-date":null,"cpf":"45612338813","origin-link":null,"payment":null," state":"SP","api-orders-hash-id":null,"email":"mah.gata2011@gmail.com","plan-name":"125 Mega","userphone":"11 95287-1231","plan-offer":"687","completed-address":"07013100 - RUA PADRE CELESTINO, 44 - CENTRO, Guarulhos - SP","type-of-person":"CPF"," type-of-product":"Residencial","main-installation-period-day":null,"plan-value":"R$89,99","alternative-installation-period-day":null}'

我只想选择值“userphone”:电话号码(所有电话号码的格式相同) 所以基本上是带有电话号码的json响应。我知道我应该使用正则表达式,但我不习惯然后会感谢任何帮助,特别是当有这么多类似的值可以相互交叉时。

值得注意的是,我需要通过这些 json 值的一整列进行交互:

这是我的代码:

import re

pattern = re.compile(r'"userphone:"')
phonenumbers=[]
for i in userphone_df['Extras']: 
    phonenumbers.append(pattern.finditer(i))

我主要是在尝试这样做

【问题讨论】:

  • 我确信 Python 有办法解析 JSON。你最好使用它,而不是正则表达式。

标签: python json


【解决方案1】:

使用json

import json
d = json.loads('{"city":"Guarulhos","bot-origin":null,"campaign-source":"attendance bot","lastState":"errorBob","main-installation-date":null,"userid":"c0405312-d97c-4b58-9192-11152c1ee621@tunnel.msging.net","full-name":"Magda dos Santos Silva","alternative-installation-date":null,"chosen-product":"Internet","bank":null,"postalcode":"07013100","due-date":null,"cpf":"45612338813","origin-link":null,"payment":null,"state":"SP","api-orders-hash-id":null,"email":"mah.gata2011@gmail.com","plan-name":"125 Mega","userphone":"11 95287-1231","plan-offer":"687","completed-address":"07013100 - RUA PADRE CELESTINO, 44 - CENTRO, Guarulhos - SP","type-of-person":"CPF","type-of-product":"Residencial","main-installation-period-day":null,"plan-value":"R$89,99","alternative-installation-period-day":null}')
print(d['userphone'])

输出:

11 95287-1231

【讨论】:

  • 嗯,它当然可以工作,但我遇到了另一个问题,有时它会返回任何值,即使它不应该,我确保所有列都包含用户电话。不过还是谢谢你的回答
  • @INGl0R1AM0R1 您可以通过问题示例再提出一个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
相关资源
最近更新 更多