2016-07-28 15 views
1

Wie kann ich den Text (Daten) zwischen einer Reihe von Zeichenfolgen sammeln? Zum Beispiel habe ich dieses Code-Snippet unten, welches eine modifizierte Version von JSON ist, die ich nicht ändern kann.Python Parse String, um Inhalte zwischen Text zu erhalten

Allerdings mag ich die Daten zwischen presets = {...}

{ 
    data = { 
     friends = { 
      max = 0 0, 
      min = 0 0, 
     }, 
     family = { 
      cars = { 
       van = "honda", 
       car = "ford", 
       bike = "trek", 
      }, 
      presets = { 
       location = "italy", 
       size = 10, 
       travelers = False, 
      }, 
      version = 1, 
     }, 
    }, 
} 

Also meine resultierenden Zeichenfolge sammeln würde, was zwischen den beiden Klammern {...} im Anschluss an dem Wort Presets ist. In diesem Fall wäre es:

location = "italy", 
size = 10, 
travelers = False, 

Mein Ausgangspunkt so weit ...

filepath = "C:/Users/jmartini/Projects/assets/tool_source.cfg" 

with open(filepath, 'r') as file: 
    data = file.read().replace('\n', '').replace('\t', '') 

    print data 

Antwort

2

Verwenden PyYaml erhalten die erforderlichen Daten

pip installieren PyYaml

import yaml 
def testjson(): 
    with open('data.json') as datafile: 
     data = datafile.read().replace("\n", "").replace("=", ":")    
     print(yaml.load(data)["data"]["family"]["presets"]) 

Ich erhalte diese Ausgabe mit Ihren Daten

{'location': 'italy', 'size': 10, 'travelers': False} 
1

Sie re hier verwenden können.

import re 
filepath = r"C:/Users/jmartini/Projects/rogue_presetsManager/assets/tool_leveleditormodule_source.cfg" 
f=open(filepath, "r") 
data = f.read() 
print re.findall(r"presets\s*=\s*\{\s*([^}]*?)\s*}", data) 
+0

warum Sie tun Doppel 'print' – JokerMartini

+1

@JokerMartini sry es war ein Tippfehler..korrigiert – vks