Pathlib read_text 作为字符串文字

Pathlib read_text as a string literal

我正在尝试从 txt 文件生成一些 json 数据。

txt 文件是从书籍中生成的,使用他们的 ocr,这使得它们难以估量(我不能随意更改我不喜欢的字符,因为它们可能很重要)并且不可靠(ocr 可能已经消失了错了,作者可能插入了会弄乱我的代码的符号。

截至目前,我有这个:

output_folder = Path(output_folder)
    
value = json.loads('{"nome": "' + file_name[:len(file_name)-4] + '", "testu": "' + (Path(filename).read_text()) + '"}')
    path = output_folder / (file_name[:len(file_name)-4] + "_opare.json")
    with path.open(mode="w+") as working_file:
        working_file.write("[" + str(value) + "]")
        working_file.close()

这给我带来了错误 json.decoder.JSONDecodeError: Invalid control character,据我所知,这是由于我的书以 '(引号)开头(是)引起的。

我读过有关字符串文字的内容,这似乎与我的情况相关,但我不知道如何使用它们。

我能做什么?

谢谢

从字里行间看出,JSONDecodeError 实际上并不是来自这段代码,对吗?它来自稍后读取您的文件的代码。

您不能使用 str(value) 将字典写入 JSON 文件。 Python的dict-to-string转换使用单引号,这在JSON中是不合法的。您需要将其转换回 JSON:

    with path.open(mode="w+") as working_file:
        json.dump( [value], working_file )

为什么你会做一个 json 只是为了再次解析它?你可以只创建一个字典:

value = {
  "nome": file_name[:len(file_name)-4],
  "testu":Path(filename).read_text(),
}