suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Ersetzen regulärer Python-Ausdrücke

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},}
淡淡烟草味淡淡烟草味2753 Tage vor583

Antworte allen(2)Ich werde antworten

  • 黄舟

    黄舟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},}'

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新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)

    写的不好,见笑了

    Antwort
    0
  • StornierenAntwort