2017-05-05 4 views
0

ich eine Textdatei haben, die wie folgt aussieht:analysieren einen Schlüssel: Wert Style-Datei und einen Wert erhalten

{ 

    "content": 
    [ 
    { 
     "id": "myid1", 
     "path": "/x/y" 
    }, 
    { 
     "id": "myid2", 
     "path": "https://stackoverflow.com/a/b" 
    } 
    ] 
} 

Gibt es einen Weg, um den Wert zu erhalten, entsprechend „id“, wenn ich die „Weg passieren "Wert für meine Methode? Zum Beispiel, wenn ich/a/b passiere, sollte ich "myid2" in return bekommen. Soll ich ein Wörterbuch erstellen?

Antwort

0

Vielleicht kurz erklären, was Sie wirklich tun müssen, da ich eine Ahnung habe, dass es eine einfachere Möglichkeit gibt, das zu tun, was Sie versuchen zu tun.

Wenn ich verstehe die Frage richtig, wollte, ob Sie die ID finden, indem ein Wert wie „/ x/y“ passing warum dann nicht die Dictionary-Struktur als

{ 

    "content": 
    { 
     "/x/y": "myid1" 
    }, 
    ...(more of the same) 
} 

Dies würde Ihnen direkten Zugang geben auf den gewünschten Wert, da Sie sonst Arrays durchlaufen müssen.

+0

Das ist richtig, ich habe eine Datei https://gist.github.com/anonymous/764bef476511ff532802d0097e6f8994 Ich werde eine Zeichenfolge übergeben, die als Pfad gleich sein wird. Ich werde dann einen Wert der ID zurückgeben, die diesem Pfad entspricht – pgokhale

0

Das sieht JSON sehr ähnlich, daher können Sie das Modul json verwenden, um die Datei zu analysieren. Dann iterieren Sie einfach die Wörterbücher in der "contents" Liste und erhalten Sie die mit der passenden "path".

import json 
with open("data.json") as f: 
    data = json.load(f) 
    print(data) 

    path = "https://stackoverflow.com/a/b" 
    for d in data["content"]: 
     if d["path"] == path: 
      print(d["id"]) 

Ausgang:

{'content': [{'path': '/x/y', 'id': 'myid1'}, {'path': '/a/b', 'id': 'myid2'}]} 
myid2 
Verwandte Themen