-1

大家好 ijson 新手我有一个非常大的 .json 文件 168 (GB) 我想获取所有可能的键,但在文件中一些值被写为 NaN。ijson 在我的代码值中创建一个生成器并输出字典。返回特定项目时,它会引发错误。如何获取字符串而不是字典而不是值?试过**parser = ijson.items (input_file, '', multiple_values = True, map_type = str) **,没有帮助。

def parse_json(json_filename):
    with open('max_data_error.txt', 'w') as outfile:
        with open(json_filename, 'r') as input_file:'''


            # outfile.write('[ '
            parser = ijson.items(input_file, '', multiple_values=True)
            cont = 0
            max_keys_list = list()
            for value in parser:
                for i in json.loads(json.dumps(value, ensure_ascii=False, default=str)) :
                    if i not in max_keys_list:
                        max_keys_list.append(i)
                        print(value)
                        print(max_keys_list)

            for keys_item in max_keys_list:
                outfile.write(keys_item + '\n')


if __name__ == '__main__':
    parse_json('./email/emailrecords.bson.json')
Traceback (most recent call last):
  File "panda read.py", line 29, in <module>
    parse_json('./email/emailrecords.bson.json')
  File "panda read.py", line 17, in parse_json
    for value in parser:
ijson.common.IncompleteJSONError: lexical error: invalid char in json text.
          litecashwire.com","lastname":NaN,"firstname":"Mia","zip":"87
                     (right here) ------^
4

1 回答 1

-1

您的文件我不是有效的 JSON(NaN不是有效的 JSON 值);因此,任何 JSON 解析库都会以一种或另一种方式抱怨这一点,除非它们具有处理这种非标准内容的扩展。

在项目描述中找到的 ijson FAQ 有一个关于无效 UTF-8 字符以及如何处理它们的问题。这些相同的答案在这里适用,所以我建议你去尝试其中一个。

于 2021-01-19T15:57:30.430 回答