【问题标题】:Iterate over multiple lines [duplicate]迭代多行[重复]
【发布时间】:2017-02-20 21:21:17
【问题描述】:

我有一个大文本文件,即pre.txt,我想使用 python 读取多行的feat_left 点。这是文本文件的快照。

{
  "outputs": {
    "/home/113267806.jpg": {
      "feat_left": [
        2.369331121444702, 
        -1.1544183492660522
      ], 
      "feat_right": [
        2.2432730197906494, 
        -0.896904468536377
      ]
    }, 
    "/home/115061965.jpg": {
      "feat_left": [
        1.8996189832687378, 
        -1.3713303804397583
      ], 
      "feat_right": [
        1.908974051475525, 
        -1.4422794580459595
      ]
    }, 
    "/home/119306609.jpg": {
      "feat_left": [
        -0.7765399217605591, 
        -1.690917730331421
      ], 
      "feat_right": [
        -1.1964678764343262, 
        -1.9359161853790283
      ]
    }, 

【问题讨论】:

  • 你的文件是json:不想逐行解析,用json.load()得到对应的python结构。
  • 您要分块读取文件吗?您的实际问题是什么?
  • 能否请您提供一个 sn-p 以阅读 feat_left @Jean-FrançoisFabre
  • 我需要在 feat_left 中有两个值
  • 没有重新打开,但这不是提到的问题的重复。它更像是“如何读取json文件”的重复......

标签: python


【解决方案1】:

阅读json 并像这样迭代,

import json
data = json.load(open('file_name.json'))
for val in data['outputs'].values():
     print(val['feat_left'])

结果会是这样,

[-0.7765399217605591, -1.690917730331421]
[2.369331121444702, -1.1544183492660522]
[1.8996189832687378, -1.3713303804397583]

编辑 您可以像这样使用图像路径,

for key,val in a['outputs'].items():
         print(key,val['feat_left'])

它会给出这样的

('/home/119306609.jpg', [-0.7765399217605591, -1.690917730331421])
('/home/113267806.jpg', [2.369331121444702, -1.1544183492660522])
('/home/115061965.jpg', [1.8996189832687378, -1.3713303804397583])

【讨论】:

  • 提供代码来加载json 文件也将是一个不错的答案(也使其符合python 3)
  • 我不确定重复部分? @Jean-FrançoisFabre
  • ??无论如何:帖子已编辑。嘿,谁在我之前投票? :)
  • @Jean-FrançoisFabre 谢谢 :)
  • 是的,data['outputs'].items() 将给出keyvalues,所以key 将是您的图像路径。答案已更新。
猜你喜欢
  • 1970-01-01
  • 2015-08-20
  • 2017-08-23
  • 2019-04-15
  • 2018-07-19
  • 1970-01-01
  • 2023-03-23
  • 2011-11-18
  • 2015-01-01
相关资源
最近更新 更多