python 对JSON进行分组,使其更具可读性

bmp9r5qi  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(150)

我有一个文件(MYFILE.txt),它是一个包含字典的列表的输出:

[{'entity_group': 'literal', 'score': 0.99999213, 'word': 'DNA', 'start': 0, 'end': 3}, {'entity_group': 'metaphoric', 'score': 0.9768174, 'word': 'loop', 'start': 4, 'end': 8}, {'entity_group': 'literal', 'score': 0.9039155, 'word': 'ing,', 'start': 8, 'end': 12}, {'entity_group': 'metaphoric', 'score': 0.99962616, 'word': 'in', 'start': 13, 'end': 15}, {'entity_group': 'literal', 'score': 0.9949911, 'word': 'which a protein or protein complex interacts simultaneously', 'start': 16, 'end': 75}, {'entity_group': 'metaphoric', 'score': 0.59057885, 'word': 'with', 'start': 76, 'end': 80}, {'entity_group': 'literal', 'score': 0.9983214, 'word': 'two separated sites on a DNA molecule, is a recurring theme', 'start': 81, 'end': 140}, {'entity_group': 'metaphoric', 'score': 0.9998679, 'word': 'in', 'start': 141, 'end': 143}, {'entity_group': 'literal', 'score': 0.9997542, 'word': 'transcription', 'start': 144, 'end': 157}, {'entity_group': 'metaphoric', 'score': 0.7964442, 'word': 'regula', 'start': 158, 'end': 164}, {'entity_group': 'literal', 'score': 0.99982435, 'word': 'tion [', 'start': 164, 'end': 170}]

我想把“字面”分组,以便只得到文本,而把隐喻保留原样。我试过下面的代码,但它说string indices must be integers,我还认为我可以把它变成HTML,并给它着色,以更好地可视化结果,但我相信有一个更快的解决方案。

with open(r'MYFILE.txt', 'r') as res:
  texty = res.read()
  for group in texty[::-1]:
      ent = group["entity_group"]
      if ent != 'literal': 
      text2 = replace_at(ent, group['end'], group['end'], text)
print(text2)
qaxu7uf2

qaxu7uf21#

但上面写着string indices must be integers
texty是一个字符串[而不是您预期的字典列表],因为这是 * .read() * 返回的结果(当您使用mode='r'执行open时);因此,当您使用 * for group in texty... * 迭代它时,每个group都是单字符串[而不是字典],这就是在 * ent = group["entity_group"] * 处引发错误[我假设]的原因。
勉强的建议:尝试在 * for group... * 之前添加带有**exec(f'texty = {texty.strip()}')**的行。
但这不是一个保存数据的好方法。请查看jsonpickle。[我更喜欢json,因为它不是python特有的。]
至于
我还认为我可以将其设置为HTML并对其着色,以便更好地显示结果,但我确信有一个更快的解决方案
恐怕没有足够的代码或上下文来完全理解您在这里的意思。包括replace_at的定义以及text和[所需的] text2值的示例集可能会有所帮助。

相关问题