【问题标题】:How to read the following file using python?如何使用python读取以下文件?
【发布时间】:2025-12-11 08:35:01
【问题描述】:

文本文件的格式:

{

"id":2,

"name":"hari"

}

{

"id":4,

"name":"kumar"

}

如何读取这个文件?它由字典组成。它不是一个 json 文件。

【问题讨论】:

标签: python string list dictionary io


【解决方案1】:

自定义解析器实现。它收集 { 和 } 之间的字符串,然后将其加载为 JSON。如果要加载嵌套字典,则需要添加括号计数器。

import json


result = []

with open('file.txt') as f:

    text_block = ''
    for line in f:
        text = line.strip()
        if text == '{':
           text_block = text
        elif text == '}':
            text_block += text
            result.append(json.loads(text_block))
        else:
            text_block += text

print(result)

输出:

[{'id': 2, 'name': 'hari'}, {'id': 4, 'name': 'kumar'}]

【讨论】:

    【解决方案2】:

    如果不是json格式,这里是我的回答:

    import ast
    
    def find(s, ch):
        # returns all indexes of occurrences of char ch in string s
        return [i for i, ltr in enumerate(s) if ltr == ch]
    
    # 1. Load your txt file as string
    with open('file.txt') as f:
        txt = f.read()
    
    # 2. Find occurrences of chars { and }
    start = find(txt, '{')
    end = find(txt, '}')
    
    # 3. Evaluate the string between corresponding occurrences of { and }
    for s, e in zip(start, end):
        a_python_dict = ast.literal_eval(txt[s:e+1])
        print(a_python_dict)
    

    我采取了find方法here

    【讨论】:

      【解决方案3】:

      如前所述,这不是一组易于解析的统一数据。

      1. 有两组相互独立的 {}。您需要决定将两者结合起来并读取为 1 个 JSON 和 2 个字典(python)或 2 个 1 个字典的 JSON。
      2. JSON 通常有双引号 (" ") 中的值,而不是字符串的单引号 (' ')。在这里,数据似乎试图说“所有值都在单引号中”和“所有变量/键都是双引号”。 JSON 不喜欢值的单引号

      由此看来,“作业”似乎是让您制作一个自定义阅读器。您需要逐行解析数据。然后你必须决定:你是否要把它变成一个 JSON 对象来转换为 dict?还是您要立即翻译数据。或者您想要我们的其他方式。决定,如果您的代码失败,那么我们可以在看到代码后为您提供帮助。否则,我们只是在猜测您想做什么或为您完成所有工作。

      否则,请查看“如何读取文件”或“打开文件”的文档

      【讨论】:

        【解决方案4】:

        在我看来,您的文本是 json 格式!如果是你的情况,答案很简单:

        import json
        
        with open('file.txt', 'r') as f:
            data = json.loads(f.read())
        

        【讨论】:

        • 不是json格式的。它由如上所示的字典组成。
        • 除了 JSON 文件应该有双引号(项目中的单引号)并且它缺少逗号。这是奇怪的格式。
        • 如果文件格式如贴,请建议我如何读取文件。
        • @RATNAABHISHEKMAMIDI 那么它是包含在文本文件中的字典吗?您需要在问题中指定这一点。
        • 感谢您的反馈。我已经编辑了这个问题。请现在建议如何读取文件。