PYTHON关于提取返回JSON结果中特定字段的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PYTHON关于提取返回JSON结果中特定字段的问题相关的知识,希望对你有一定的参考价值。


"statuses": [

"created_at": "Tue May 31 17:46:55 +0800 2011",
"id": 11488058246,
"text": "求关注。",
"source": "<a href="http://weibo.com" rel="nofollow">新浪微博</a>",
"favorited": false,
"truncated": false,

比如返回了个这个,如何提取里面的TEXT的内容

实际上JSON就是Python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串,Python有一个叫
simplejson的库可以方便的完成JSON的生成和解析,这个包已经包含在Python2.6中,就叫json 主要包含四个方法:
dump和dumps(从Python生成JSON),load和loads(解析JSON成Python的数据类型)dump和dumps的唯一区别是
dump会生成一个类文件对象,dumps会生成字符串,同理load和loads分别解析类文件对象和字符串格式的JSON
import json
dic =
'str': 'this is a string',
'list': [1, 2, 'a', 'b'],
'sub_dic':
'sub_str': 'this is sub str',
'sub_list': [1, 2, 3]
,
'end': 'end'

json.dumps(dic)
#output:
#'"sub_dic": "sub_str": "this is sub str", "sub_list": [1, 2, 3], "end": "end", "list": [1, 2, "a", "b"], "str": "this is a string"'

举个简单的例子就是:
import json

s = json.loads('"name":"test", "type":"name":"seq", "parameter":["1", "2"]')

print s

print s.keys()

print s["name"]

print s["type"]["name"]

print s["type"]["parameter"][1]
参考技术A 楼主,json是给javascript使用的。如果是python后台放回到前台,那么在前台使用javascript解析使用就可以了。如果要用python解析json,如下:
先import json导入json模块,

然后加载json编码
如f是读取网页得到的json结构
加载:json_r=json.loads(f)

就可以向操作字典那样操作json_r了
参考技术B

把这个数据存在一个text里。


    "statuses": [
        
            "created_at": "Tue May 31 17:46:55 +0800 2011",
            "id": 11488058246,
            "text": "求关注。",
            "source": "<a href='http://weibo.com' rel='nofollow'>新浪微博</a>",
            "favorited": false,
            "truncated": false

]

然后用以下程序读取。

# -*- coding: utf-8 -*-
def main():
    import json
    file = open("2.txt","r")
    lines = []
    for line in file:
        lines.append(line.strip())
    str = "".join(lines)
    js = json.loads(str)
    print js.get("statuses")[0].get("text")
    
if __name__=="__main__":
    main()

即可得到结果。

求关注。

参考技术C

首先,你的这个json格式有问题

其次,给你一个例子:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import json


jsonstring ='"text": "hellworld", "__module__": "MyObj", "__class__": "__main__" '


def main():
    data = json.loads(jsonstring)
    # 获取text内容
    print data['text']


if __name__ == '__main__':
    main()

参考技术D 直接调用json模块,然后用它的load方法,就可以变成一个字典。你可以按字典的方法访问每个值。

json模块是内置 的。

从Python中的json文件中的特定字段中提取文本

【中文标题】从Python中的json文件中的特定字段中提取文本【英文标题】:Extracting text from a specific field in a json file in Python 【发布时间】:2022-01-05 22:47:04 【问题描述】:

我的 JSON 看起来像这样(但有很多这样的行):

"text": "Home - Homepage des Kunstvereins Pro Ars Lausitz e.V.\nKunst. Und so weiter.", "timestamp": "2018-01-20T18:56:35Z", "url": "http://proarslausitz.de/1.html"
"text": "Bildnummer: 79800031\nVektorgrafikSkalieren Sie ohne Aufl\u00f6sungsverlust auf jede beliebige. Ende.", "url": "http://www.shutterstock.com/de/pic.mhtml?id=79800031&src=lznayUu4-IHg9bkDAflIhg-1-15"

我想创建一个 .txt 文件,其中仅包含来自 text 的文本。所以它只是:

Home - Homepage des Kunstvereins Pro Ars Lausitz e.V.\nKunst. Und so weiter. Bildnummer: 79800031\nVektorgrafikSkalieren Sie ohne Aufl\u00f6sungsverlust auf jede beliebige. Ende.

没有字符串,什么都没有。我认为编码(因为元音变音)之后不难解决。但是关于文本提取,我知道我可以做到:

json_object = json.loads(json_object_string)
print(json_object["text"])

但这只是为了一条线。我需要遍历这些行吗?如何将文本合并到一个 .txt 文件中?

【问题讨论】:

只遍历行 【参考方案1】:
with open("file.txt", 'w') as txt_file:
    for i in range(len(js_file['...'])):
        txt_file.write(js['...'][i]['text'])

txt_file.close()

用 json 文件的主键名替换 '...'

【讨论】:

【参考方案2】:

我不完全确定是否有一种方法可以“矢量化”从 json 复制值,即使有,在我看来,迭代仍然可以很好地完成工作。如果我要遍历那个长 JSON 的每一行并将每个“文本”放入一个文本文件中,我会这样做:

import json

# removed escape sequences, that is not focus of problem
test = '["text": "Home - Homepage des Kunstvereins Pro Ars Lausitz e.V.Kunst. Und so weiter.", "timestamp": "2018-01-20T18:56:35Z", "url": "http://proarslausitz.de/1.html", "text": "Bildnummer: 79800031VektorgrafikSkalieren Sie ohne Aufl sungsverlust auf jede beliebige. Ende.", "url": "http://www.shutterstock.com/de/pic.mhtml?id=79800031&src=lznayUu4-IHg9bkDAflIhg-1-15"]'

# as you said loading the object from list of dicts into json
test_json = json.loads(test)

# opens a new text file to put the json text into
with open("json_output.txt", 'w+') as file:
    for line in test_json:
       # assuming the text includes /n write function will paste each dict on different line
       file.write(line.get("text"))

【讨论】:

以上是关于PYTHON关于提取返回JSON结果中特定字段的问题的主要内容,如果未能解决你的问题,请参考以下文章

从Python中的json文件中的特定字段中提取文本

从 JSON 文件中提取字段,将其与纯文本文件匹配值进行比较,并从 JSON 文件中提取特定字段

python进行数据库查询中怎么把结果提取出来,跪谢

如何从 python 中的字段中提取特定数据以打印它?

使用 jq 从 JSON 输出中提取特定字段

使用 XSLT 从 JSON 输出中提取特定字段