来自一个文件,我有类似以下字符串:
var1 : data1
var2 : data2
dict1 {
var3 : data3
dict2 {
var4 : data4
}
var5 : data5
}
dict3 {
var6 : data6
var7 : data7
}
等等。(行尾是 \n,缩进是 \t 每个)
我试着把它转换成这样的东西:
Dictionary={"var1":"data1","var2":"data2", "dict1" :
{"var3":"data3", "dict2" : {
"var4":"data4" }, "var5":"data5"}
, dict3:{"var6":"data6","var7":"data7"}
(缩进也只是让它以某种方式可读)
要解决它,我能想到的就是将它分成一个列表,然后沿着列表向下走,直到我在字符串中找到一个“}”,然后删除它(所以我以后不会遇到它),然后走到我找到带有“{”的字符串,删除之前的空格和之后的“{”(现在temp=re.split ('(\S+) \{',out[z])
在这个例子中使用第一个temp [1]将是'dict2') ,添加其间的所有内容,最后继续下一个“}”。
但这并不快速或优雅。我肯定错过了一些东西。
代码目前是:
def procvar(strinG):
x=y=z=temp1=temp2=0
back = False
out=re.split ('\n',strinG) #left over from some other tries
while z < len(out):
print "z=",z," out[z]= ", out[z]
if "{" in out[z]:
if back == True:
back = False
xtemp=re.split ('(\S+) \{',out[z])
out[z]=xtemp[1]
ytemp=xtemp[1]
temp2=z+1
print "Temp: ",temp1," - ",out[temp1]
out[z]={out[z]:[]}
while temp2 <= temp1:
out[z][xtemp[1]].append(out[temp2]) # not finished here, for the time being I insert the strings as they are
del out[temp2]
temp1-=1
print out[z]
if "}" in out[z]:
back = True
del out[z]
temp1 = z-1
if back == True:
z-=1
else:
z+=1
return out