Python Json从文本文件创建字典,打印文件问题

Python Json从文本文件创建字典,打印文件问题,json,windows,python-3.7,Json,Windows,Python 3.7,我能够获取一个文本文件,读取每一行,每一行创建一个字典,更新(追加)每一行并存储json文件。问题在于读取json文件时,它将无法正确读取。错误是否指向存储文件问题 文本文件如下所示: 84.txt;弗兰肯斯坦,或现代普罗米修斯;玛丽·沃斯通克拉夫特(戈德温)雪莱 98.txt;双城记;查尔斯·狄更斯 报告的错误是:JSONDecodeError:额外数据:第1行第133列 (char 132)-将其添加到第一个“}{”之间。不确定 json在平面文件格式中的外观如何?如上所示的输出文件 编辑

我能够获取一个文本文件,读取每一行,每一行创建一个字典,更新(追加)每一行并存储json文件。问题在于读取json文件时,它将无法正确读取。错误是否指向存储文件问题

文本文件如下所示:

84.txt;弗兰肯斯坦,或现代普罗米修斯;玛丽·沃斯通克拉夫特(戈德温)雪莱 98.txt;双城记;查尔斯·狄更斯

报告的错误是:JSONDecodeError:额外数据:第1行第133列 (char 132)-将其添加到第一个“}{”之间。不确定 json在平面文件格式中的外观如何?如上所示的输出文件 编辑看起来像:{“AuthorName”:“Mary Wollstonecraft(戈德温) 雪莱,“书号”:“84”,“书名”:“弗兰肯斯坦,或 现代普罗米修斯{“作者名”:“查尔斯·狄更斯”,“书号”: 98,《书名》:《双城记》}

我最终改变了方法,用熊猫来阅读文本,然后分割单细胞输入

我最终改变了方法,用熊猫来阅读文本,然后分割单细胞输入


大括号},{之间需要一些逗号。但我建议将所有书籍数据写入字典列表,然后使用json.dumps()一次性转换。Joshua,感谢您的快速反馈。我手动确认,添加括号和逗号将允许使用[…},{…]读取文件。一次完成所有书籍数据将不起作用,因为下一个作业将读取x00K项。我仍然需要一种方法,通过一次读取一行文本文件并最终生成一个最终合并的json文件来创建字典。你需要在括号之间加上一些逗号},{。但我建议将所有书籍数据写入字典列表,然后使用json.dumps()一次性转换。Joshua,感谢您的快速反馈。我手动确认了添加括号和逗号将允许使用[…},{…]读取文件。一次读取所有书籍数据将不起作用,因为下一个作业将读取x00K的项目。我仍然需要一种方法,通过一次读取一行文本文件并最终生成最终的json文件来创建字典。
import json
import re

path = "C:\\...\\data\\"

books = {}
books_json = {}
final_book_json ={}

file = open(path + 'books\\set_of_books.txt', 'r') 
json_list = file.readlines()
open(path + 'books\\books_json.json', 'w').close() # used to clean each test

json_create = []
i = 0

for line in json_list:
    line = line.replace('#', '')
    line = line.replace('.txt','')
    line = line.replace('\n','')
    line = line.split(';', 4)
    BookNumber = line[0]
    BookTitle = line[1]
    AuthorName = line[-1]
file
    if BookNumber == ' 2701': 
        BookNumber = line[0]
        BookTitle1 = line[1]
        BookTitle2 = line[2]
        AuthorName = line[3]
        BookTitle = BookTitle1 + ';' + BookTitle2 # needed to combine title into one to fit dict format
    books = json.dumps( {'AuthorName': AuthorName,  'BookNumber': BookNumber, 'BookTitle': BookTitle})
    books_json = json.loads(books)
    final_book_json.update(books_json)
    with open(path + 'books\\books_json.json', 'a'
             ) as out_put:                 
        json.dump(books_json, out_put)

with open(path + 'books\\books_json.json', 'r'
         ) as out_put:
'books\\books_json.json', 'r')]
    print(json.load(out_put))  
    books = pd.read_csv(path + 'books\\set_of_books.txt', sep='\t', names =('r','t', 'a') )
    #print(books.head(10))

    # Function to clean the 'raw(r)' inoput data 
    def clean_line(cell):
...
        return cell

    books['r'] = books['r'].apply(clean_line)
    books = books['r'].str.split(';', expand=True)