【问题标题】:python: parsing data from a bufferpython:从缓冲区解析数据
【发布时间】:2018-04-09 18:15:46
【问题描述】:

我使用 pycurl 函数从网站收集数据。按照示例代码,经过轻微修改后,我确实将所有数据放在一个大缓冲区中。它的格式为 { "field_id":"data","field_id2":"data2", .. } 我希望将其解析为文本行,类似于 csv,每组数据都有一行输出用花括号括起来。如何最好地实现这一点,尽可能“pythonic”?哦,我在哪里可以最好地进行 UTF-8 转换?我怀疑源代码是 ISO8859 - 但这是次要问题。

相关代码:

buffer = StringIO()
c = pycurl.Curl()
c.setopt(c.URL, MY_URL)
c.setopt(c.WRITEDATA, buffer)
c.perform()
c.close()

样本数据:

`{"status":"ok","nature":"Liste des champs principaux de tous les terrains publi\u00e9s","count":"1211","liste":
 [{"id":"3667","date_modif":"2013-04-03 11:27:00","code_terrain":"LF5155","toponyme":"Champagne Vol Libre","type_terrain":"Base ULM Autorisation OBLIGATOIRE ","latitude":"N 48 56 10","longitude":"E 004 03 42","altitude":"335` ft","pays":"France","region":"Grand-Est","departement":"Marne","ville":"Villeneuve"},
{"id":"5118","date_modif":"2015-08-18 13:17:23","code_terrain":"LF4861","toponyme":"La Canourgue Conques","type_terrain":"A\u00e9rodrome ferm\u00e9.","latitude":"N 44 24 55","longitude":"E 003 17 05","altitude":"2920 ft","pays":"France","region":"Occitanie","departement":"Loz\u00e8re","ville":"La Canourgue"}

【问题讨论】:

  • 谢谢,PRMoureu 但这不起作用。也许我错过了一些基本的东西,正如已经说过的 JSON 对我来说是新领域。错误是“ValueError:无法解码 JSON 对象”
  • 你是如何得到样本输出的?您可以使用与json.loads(result_string) 相同的方式

标签: python json parsing pycurl


【解决方案1】:

您正在尝试解析 JSON 文件,查看文档https://docs.python.org/2/library/json.html 可能会有用

【讨论】:

  • 啊!我还没有遇到过 JSON 格式的数据,这就是我无法识别该格式的原因。
  • 别忘了“接受”我的回答,这样来这里的其他人也会找到解决方案并“信任”它。 :)
【解决方案2】:
import json
result = json.loads('{"something": 1}', encoding="ISO8859")  # default encoding is utf-8
print(result["something"])

>>> 1

【讨论】:

  • 虽然只有代码的答案可能会解决问题,但如果你能解释为什么你的答案可以解决问题,那总是更好。当其他人查看答案以了解发生了什么变化以及为什么应该这样做时,这会有所帮助。
猜你喜欢
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 2011-08-25
  • 2021-11-13
  • 2018-11-21
相关资源
最近更新 更多