Heim > Fragen und Antworten > Hauptteil
Ich bin kürzlich auf ein Problem mit der Ersetzung regulärer Ausdrücke gestoßen
Jedem Datenelement in den Zeitdaten ist [0]= [1]= [2]= [3]= dieser Index vorangestellt:
["time"]={[0]={["status"]=true,["ac"]=1,["bg"]=2},[1]={["status"]=true,["ac"]=1,["bg"]=2},[2]={["status"]=true,["ac"]=1,["bg"]=2},}
Aus bestimmten Gründen ist der vorherige Index nicht mehr vorhanden und kann nur mit regulären Ausdrücken hinzugefügt werden. Das Problem besteht darin, dass die Datenmenge zeitlich unterschiedlich ist
["time"]={{["status"]=true,["ac"]=1,["bg"]=2},}
["time"]={{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},}
["time"]={{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},}
Gibt es eine Möglichkeit, die Reihenfolge [0]= [1]= [2]= [3]=automatisch hinzuzufügen?
Hinzugefügt:Die falschen Daten sind zusammen und die zeitliche Reihenfolge der Daten ist nicht dieselbe, wie folgt:
["time1"]={{["status"]=true,["ac"]=1,["bg"]=2},},["time2"]={{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},},["time3"]={{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},}
Möchten Sie es ändern in:
["time1"]={[0]={["status"]=true,["ac"]=1,["bg"]=2},},["time2"]={[0]={["status"]=true,["ac"]=1,["bg"]=2},[1]={["status"]=true,["ac"]=1,["bg"]=2},},["time3"]={[0]={["status"]=true,["ac"]=1,["bg"]=2},[1]={["status"]=true,["ac"]=1,["bg"]=2},[2]={["status"]=true,["ac"]=1,["bg"]=2},}
黄舟2017-05-18 11:00:52
>>> import re
>>> s='["time"]={{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},}'
>>> n=0
>>> def repl(m):
global n
rslt='[%d]=%s'%(n,m.group(0))
n+=1
return rslt
>>> p=re.compile(r'\{[^{}]+\},')
>>> p.sub(repl,s)
'["time"]={[0]={["status"]=true,["ac"]=1,["bg"]=2},[1]={["status"]=true,["ac"]=1,["bg"]=2},[2]={["status"]=true,["ac"]=1,["bg"]=2},}'
曾经蜡笔没有小新2017-05-18 11:00:52
i = 0
def func(x):
global i
s = '[%d]=%s' % (i,x)
i += 1
return s
import re
a = '["time"]={{["status"]=true,["ac"]=1,["bg"]=2},{["status"]=true,["ac"]=1,["bg"]=2},}'
print re.sub('\{\["status"',lambda m:func(m.group(0)),a)
写的不好,见笑了