0

我正在使用 json2csv.py(使用 twarc 编译)从 JSONL 文件中提取额外字段,并且无法提取数组中保存的一些文本字段。这是数组,我希望能够只提取主题标签文本。

"entities": {
      "hashtags": [
        {
          "text": "NoJusticeNoPeace",
          "indices": [
            65,
            82
          ]
        },
        {
          "text": "justiceforNaledi",
          "indices": [
            83,
            100
          ]
        },

我可以使用此代码添加其他没有数组的字段:

python json2csv.py tweets_may.jsonl -e full_text retweeted_status.extended_tweet.full_text > testfull_text.csv

但是,我不知道如何拉出数组或其中的元素。可以使用以下retweeted_status.extended_tweet.entities.hashtags.0.text我尝试使用的方法来识别单个主题标签文本:

python json2csv.py tweets_may.jsonl -e all_hashtags retweeted_status.extended_tweet.entities.hashtags.0.text > testhash.csv

但这只是返回一个空列。理想情况下,我希望能够将“标签”数组中所有出现的“文本”提取到单个列或单独的列中。

4

2 回答 2

0

正如亚当已经说过的,您可以只使用该json模块来访问这些类型的文件。

例如,当我有以下内容时file.jsonl

{
    "entities": {
        "hashtags": [
            {
            "text": "NoJusticeNoPeace",
            "indices": [
                65,
                82
            ]
            },
            {
            "text": "justiceforNaledi",
            "indices": [
                83,
                100
            ]
            }
        ]
    }
}

要访问存储在此文件中的信息,您可以执行以下操作:

import json

with open('file.jsonl','r') as file:
    jsonl = json.load(file)

这个jsonl变量现在只是一个字典,你可以像往常一样访问。

hashtags = jsonl['entities']['hashtags']
print(hashtags[0]['text'])
>>> NoJusticeNoPeace
print(hashtags[1]['indices'])
>>> [83, 100]
于 2020-06-19T21:36:13.257 回答
0

json模块:json编码器和解码器

JSON(JavaScript Object Notation),由 RFC 7159(已废弃 RFC 4627)和 ECMA-404 指定,是一种受 JavaScript 对象文字语法启发的轻量级数据交换格式(尽管它不是 JavaScript 1 的严格子集)...

我鼓励您在 python 文档json 编码器解码器模块中查看和阅读更多内容

根据我的评论,json 模块并json.load()为您完成所有工作。只需导入它并调用它的 API。

如果您使用的是 python 3.xx:

import json
import pprint
json_file_path="t.json"

json_data = {}

with open(json_file_path,'r') as jp:
    json_data=json.load(jp)
    pprint.pprint(json_data)
    # sinse hashtags is a list (json array) we access its elements like:
    var = json_data['entities']['hashtags'][0]['text']
    print("var is : {}".format(var))
    print("var type is : {}".format(type(var)))    

以上代码的python 3.xx控制台输出

{'entities': {'hashtags': [{'indices': [65, 82], 'text': 'NoJusticeNoPeace'},
                           {'indices': [83, 100], 'text': 'justiceforNaledi'}]}}
var is : NoJusticeNoPeace
var type is : <class 'str'>

在 python 2.xx 上,唯一的变化是从打印行中省略括号。但上述脚本的输出之间存在一个主要区别。

在 python 3 上,字典项类型是str. 可以使用了。但在 python 2 中,字典项的类型是:<type 'unicode'>. 所以要注意。您需要将其转换为str,只需这样做:str(var)

于 2020-06-20T13:18:04.783 回答