2016-07-28 55 views
1

如何收集一组字符串之间的文本(数据)?例如,我在下面有这个代码片断,这是json的一个修改版本,我没有能力更改。python解析字符串以获取文本之间的内容

但是我想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, 
     }, 
    }, 
} 
收集数据,所以我得到的字符串是无论是两个支架 {...}以下单词预设之间。在这种情况下,这将是:

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

我的起点,那么远,

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

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

    print data 

回答

2

使用PyYaml获得所需要的数据

PIP安装PyYaml

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

为什么你做我得到这个输出与您的数据

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

可以使用re这里。

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

双“打印” – JokerMartini

+1

@JokerMartini sry这是一个错字纠正 – vks

相关问题