Extrahieren von Informationen aus einem Tupel (Python)
Ich bin derzeit mit der httplib Bibliothek in Python 2.7 zu erhalten, einige Header aus einer website zu schaffen: a) die Dateigröße der download und b) das Datum der letzten änderung der Datei. Ich habe einige online-tools, und diese details nicht existieren.
Ich bin derzeit scripting meine Python-code, und es scheint einwandfrei zu arbeiten, zurück zu Holen die erforderlichen Informationen ein. Dennoch, die Reaktion mit den header-Informationen ist eine Liste mit einer Anzahl von Tupeln. Eine Probe der Reaktion ist unten:-
[('content-length', '2501479'),
('accept-ranges', 'bytes'),
('vary', 'Accept-Encoding'),
('server', 'off'),
('last-modified', 'Thu, 20 Oct 2011 04:30:01 GMT'),
('etag', '"2c8171a-262b67-4afb368edfffc"'),
('date', 'Thu, 20 Oct 2011 16:01:11 GMT'),
('content-type', 'text/plain')]
Was ich Suche zu tun, ist zu entfernen, im Grunde die Größe der Datei ("2501479") und das Datum ("Thu, 20 Oct 2011 04:30:01 GMT"). Irgendwelche Ideen, wie ich kann gehen Sie über das tun dies? Ich ursprünglich versucht variable[0]
aber das gibt "'content-length', '2501479'"
. Wie kann ich die Dateigröße allein (in der Theorie, der zweite Teil des ersten Tupel in der Liste!).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, Sie können machen es ein wenig einfacher, mit zu arbeiten, indem Sie Ihre Liste von Tupeln in ein Wörterbuch:
Für die Datum, ich würde schalten Sie es in einen datetime Objekt mit dem E-Mail.utils.parsedate Funktion:
Konvertieren Sie zunächst das Tupel in eine
dict
, und dann konvertieren Sie den Wertint
erhalten Sie eine Anzahl:Sie müssen einfach nur den index wieder, um Zugriff auf die Tupel. Wie
für die Größe und das Datum der letzten änderung.
Hinweis: Dies funktioniert nur, wenn die Indizes von
content-length
undlast-modified
sind immer die gleichen.Du hast Tupel innerhalb eines Arrays... zum Glück können Sie die Referenz - (oder dereferenzieren Sie je nach Terminologie) auf die gleiche Weise...
also v = x[0] wird Ihnen, wie Sie die Tupel ("'content-length', '2501479'") und
v[0] geben Sie die 'content-length' und v[1] geben Sie '2501479' (obwohl Sie wahrscheinlich wollen, zu tun, die ein int(v[0]) auf, die mit vielleicht einige Fehler zu überprüfen.
Können Sie sich besser darum, diesen array in ein dict obwohl; so können Sie sicher sein, immer die content-Länge, wenn der Auftrag sollte sich jemals ändern.
Zum Glück, die syntax ist fast die gleiche - es nutzt den [] - operator. Allerdings werde ich überlasse es Ihnen, Blick auf die python man-Seiten, um zu sehen, wie die Konvertierung eines array -> dict (kann nicht alles für dich tun!!)