如何读取在记录的acutal JSON字典部分前面有一个整数值的数据文件?

2024-09-30 01:32:52 发布

您现在位置:Python中文网/ 问答频道 /正文

该文件有许多记录;以下是两条记录,用于显示格式:

3830591998918656: {"id":"2208ef95-355c-53a6-96bc-206a4831f2fe","data":"Tu pidneg."}
548113328635904: {"id":"d5887987-bf5d-5813-b524-722ffff11882","data":"Vubitaira lifo."}

我想读取文件并显示此文件中的记录;但是,不允许在数据文件中读取记录开头的整数。 如果我要编辑数据文件并删除例如整数:3830591998918656,那么我就能够执行python代码来读取记录并显示它们。此外,如果我要将该整数作为属性移动到字典中,那么我可以读取并显示该文件。 e、 g.输入更新如下:

{"score":3830591998918656,"id":"2208ef95-355c-53a6-96bc-206a4831f2fe","data":"Tu pidneg."}
{"score":548113328635904,"id":"d5887987-bf5d-5813-b524-722ffff11882","data":"Vubitaira lifo."}

我运行代码:

import json
import os
readinputfile = []
print("Started Reading JSON file which contains multiple JSON document")
with open('2rec_example_input_data_1.data') as f:
    for jsonObj in f:
        readinputfileDict = json.loads(jsonObj)
        readinputfile.append(readinputfileDict)
print("Printing each JSON Decoded Object")
for inputrec in readinputfile:
    print(inputrec["score"], inputrec["id"], inputrec["data"])

然后我可以显示:

3830591998918656 2208ef95-355c-53a6-96bc-206a4831f2fe Tu pidneg.
548113328635904 d5887987-bf5d-5813-b524-722ffff11882 Vubitaira lifo.

如何用Python编写代码来读取文件并显示记录,而不必通过获取第一个整数并将其移动到文件的Json字典部分并命名(例如score)来更改文件的结构

是否可以这样做,或者是否需要修复文件,因为它的格式不可接受


Tags: 文件代码iddata记录整数scoretu
2条回答

无需修改该文件,即使在Python中也是如此。只需在解析JSON字符串之前先拆分行

with open('2rec_example_input_data_1.data') as f:
    for line in f:
        number, jsonStr= line.split(' ', 1)
        json_obj = json.loads(jsonStr)       

可以使用正则表达式将输入文件的每一行拆分为两部分,然后从这两部分创建所需的词典

import json
import re

readinputfile = []
with open('2rec_example_input_data_1.data') as f:
    for line in f:
        match = re.match(r'(\d+):\s(.+)', line)
        if match:
            readinputfileDict = {'score': match.group(1)}  # Initialize.
            readinputfileDict.update(json.loads(match.group(2))) # Copy the rest.
            readinputfile.append(readinputfileDict)

for inputrec in readinputfile:
    print(inputrec)

显示的输出:

{'score': '3830591998918656', 'id': '2208ef95-355c-53a6-96bc-206a4831f2fe', 'data': 'Tu pidneg.'}
{'score': '548113328635904', 'id': 'd5887987-bf5d-5813-b524-722ffff11882', 'data': 'Vubitaira lifo.'}

相关问题 更多 >

    热门问题