Nehmen wir an, dass ich eine Probe der folgenden Zeichenketten haben:Wie man bestimmte Wörter aus einer Liste extrahiert, wenn sich die Listenlänge ändert?
- string = ‚http/1.1 abc-ad-sd-00 .sad.sdsd.der.net (Server/1.2 [dsddsf tat : t yy p sS]), http/1.1 asc-ad-sd-11 .sad.sdsd.der.net (Server/1.2 [gfef srFw: t reri pss]) '
- string1 =' http/1.1 abc-ad-sd-01 .sad.sdsd.der.net (Server/1.2 [dsddsf fu tat: t yy p sS]), http/1.1 asc-ad-sd-13 .sad .sdsd.der.net (Server/1.2 [ als srFw SFF: t reri pss]) '
- string2 =' http/1.1 abc-ad-sd-002 .sad.sdsd.der.net (Server/1.2 [dsddsf tat t yy p sS ]), HTTP/1.1 ASC-ad-SD-14 .sad.sdsd.der.net (Server/1.2 [rts als f srFw: t reri Pss]) '
- string3 =' http/1.1 abc-ad-sd-03 .sad.sdsd.der.net (Server/1.2 [dsddsf tat: tyy p sS]), http/1.1 asc-ad-sd-15 .sad.sdsd.der .net (Server/1.2 [tttts als t srFw: t reri pSs]) '
Hier ist, was ich tat, die kühnen Saiten zu erhalten:
If name == 'via':
name = “ID1”
string = header_line.split(' ')
b = (string[2].split('.'))
value = b[0]
headers[name] = value
#----------#
name_1 = “ID2”
string = header_line.split(' ')
b_1 = (string[9].split('.'))
value_1 = b_1[0]
headers[name_1] = value_1
#-----#
name_2 = “ID3”
string = header_line.split(' ')
b_2 = (string[11:])
value_2 = ''.join(b_2)
headers[name_2] = value_2
#----#
Das Problem dabei ist, dass es nur in bestimmten Situationen funktioniert. Wie Sie sehen können, gibt es 3 verschiedene Strings, so dass die fett gedruckten Strings nicht richtig funktionieren. Natürlich ist das nicht mein vollständiger Code, da diese Zeichenfolgen in der dict-Liste gespeichert sind. Beispiel: Meine erste Ausgabe sieht wie folgt aus:
[{ 'item1': '10574', 'Element2': '69 .241.51.134' , 'über': ‚http/1.1 abc-ad-sd -00.sad.sdsd.der.net (Server/1.2 [dsddsf tat: t yy p sS]), http/1.1 asc-ad-sd-11.sad.sdsd.der.net (Server/1.2 [tttts srFw : t RERI Pss]))‘, 'item4': '22', 'HTTP-Antwort': [ 'HTTP/1.1 200 OK \ r \ n']}, {...}, {...}]
Und ich möchte eine andere Ausgabe wie diese basierend auf den analysierten Werten aus der obigen Antwort.
[{ 'item1': '10574', 'Element2': '69 .241.51.134' , 'ID3': 'tttts srFw: t reri pss', 'item4': '22', 'ID2' : 'asc-ad-sd-11', 'HTTP-ANTWORT': ['HTTP/1.1 200 OK \ r \ n'], 'ID1': 'abc-ad-sd-00'}, {...}, { ...}]
so wie Sie sehen können, ich habe Haufen dicts in einer Liste und für den Schlüssel ‚über‘, will ich seinen Wert in verschiedenen Teil analysiert werden, die ich will und speichern sie in neuen Schlüsselwerte. Ich habe das bereits in meinem Code getan.
Update: Vielen Dank für Ihre Antworten. Ich habe meine Frage geklärt. Aus Ihrer Antwort funktioniert der Wert für ID1 und ID2, der Wert innerhalb von [] funktioniert jedoch nicht, da "tttts" nicht in jeder Antwort dieselbe Zeichenfolge ist.
Ein weiteres Update: Vielen Dank für Ihre Hilfe! Mit der Antwort von allen habe ich meinen Code ein wenig optimiert und herausgefunden, wie man die Werte bekommt.
Wenn Ihre Frage elegantere war ich versucht hätte mehr zu helfen, aber es scheint, dass Sie versuchen müssen, mit regulären Ausdrücken: http://stackoverflow.com/documentation/python/632/regular-expressions# t = 201607251447256330505 –
Vielen Dank für Ihren Kommentar. Bitte sehen Sie sich die aktualisierte Frage an und lassen Sie mich wissen, wenn Sie eine Klärung benötigen. – shishh03