0
    import json
    file= open('webtext.txt','a+')
    
    with open('output-dataset_v1_webtext.test.jsonl') as json_file:
         data= json.load(json_file)
         for item in data:
         file.write(item)
         print(item)
    
    
 
>>> I am getting this error:
    
        raise JSONDecodeError("Extra data", s, end)
    json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 656)

我已经尝试过json.loads()

我的 json 文件看起来像多个对象:

{"id": 255000, "ended": true, "length": 134, "text": "Is this restaurant fami"}
{"id": 255001, "ended": true, "length": 713, "text": "Clinton talks about her time of 'refle"}

dict['text']任何关于如何解决现有问题并将其写入文本文件的建议将不胜感激

4

4 回答 4

1

我当然不是 JSON 专家,所以可能有更好的方法来做到这一点,但您应该能够通过将顶级数据放入数组来解决您的问题:

[
{"id": 255000, "ended": true, "length": 134, "text": "Is this restaurant fami"},
{"id": 255001, "ended": true, "length": 713, "text": "Clinton talks about her time of 'refle"}
]

您得到的错误基本上是在告诉您,可能只有一个顶级 JSON 实体。如果你想要更多,它们必须放在一个数组中。

于 2019-11-19T11:24:05.013 回答
1

看起来您需要迭代文件中的每一行,然后使用json.loads.

前任:

with open('output-dataset_v1_webtext.test.jsonl') as json_file:
    for line in json_file:   #Iterate Each Line
        data= json.loads(line.strip())   #Use json.loads 
        for item in data:
            file.write(item)
            print(item)
于 2019-11-19T11:24:34.097 回答
1

你需要遍历它:

import json


with open('output-dataset_v1_webtext.test.jsonl','r') as json_file:
    for line in json_file.readlines():
         data= json.loads(line)
         for item in data:
            print(item)
于 2019-11-19T11:24:53.600 回答
1

正如其他人指出的那样,您的 JSON 必须用方括号括起来,因为它只能有一个顶级对象。比如像这样:

[
  {"id": 255000,"ended": true, "length": 134, "text": "Is this restaurant fami"},
  {"id": 255001, "ended": true, "length": 713, "text": "Clinton talks about her time of 'refle"}
]

然后,您应该能够使用此代码来执行您正在尝试的操作:

import json
file = open('webtext.txt', 'a')

with open('test.json') as json_file:
    data = json.load(json_file)
    for item in data:
        file.write(str(item))
        print(item)

为了解决您的file.write问题,您需要转换item为字符串,如下所示str(item)

于 2019-11-19T11:29:48.427 回答