0

我有一个 JSON 文件,如下所示:

[
 {
   "story_id": xx,
   "line_number": 109,
   "sentence": "fhsabdajbndkjlabhfegbdajbdhj",
   "ner": "{'gfjghj': 'PERSON', 'hjbhjb': 'DATE'}",
   "PROPN": "['vhjb', 'ghjhb']",
   "Best": 1
 }
]

我想在标签ner和PROPN中找到开始和结束“(双引号)并用空替换。

输出应该是一个 json 文件,数据应该是这样的:

 [
 {
   "story_id": xx,
   "line_number": 109,
   "sentence": "fhsabdajbndkjlabhfegbdajbdhj",
   "ner": {'gfjghj': 'PERSON', 'hjbhjb': 'DATE'},
   "PROPN": ['vhjb', 'ghjhb'],
   "Best": 1
 }
]    

我试过这个:

import json
with open('path/to/file.json','r',encoding ='utf-8') as f:
    data = json.load(f)

for item in data:
    item['ner'] = item['ner'].replace('"{', '{').replace('}"', '}').replace('"[', '[').replace(']"', ']')

with open('path/to/output_file.json'', 'w') as f:
    json.dump(data, f)

运行此程序时,我收到“UnicodeDecodeError”。

任何人都可以帮助这些吗?

提前致谢。

4

1 回答 1

1

使用ast模块

前任:

import json
with open('path/to/file.json','r',encoding ='utf-8') as f:
    data = json.load(f)

for item in data:
    item['ner'] = ast.literal_eval(item['ner'])

with open('path/to/output_file.json'', 'w') as f:
    json.dump(data, f)
于 2019-08-28T18:04:17.563 回答