Print Zeile, die "Wort" python
Möchte ich zum drucken NUR die Zeile "Server" enthält die in der nachstehenden Stück Ausgabe:
Date: Sun, 16 Dec 2012 20:07:44 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=da8d52b67e5c7522:FF=0:TM=1355688464:LM=1355688464:S=CrK5vV-qb3UgWUM1; expires=Tue, 16-Dec-2014 20:07:44 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=nICkwXDM6H7TNQfHbo06FbvZhO61bzNmtOn4HA71ukaVDSgywlBjBkAR-gXCpMNo1TlYym-eYMUlMkCHVpj7bDRwiHT6jkr7z4dMrApDuTk_HuTrZrkoctKlS7lXjz9a; expires=Mon, 17-Jun-2013 20:07:44 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Connection: close
Diese Informationen holt man sich aus einer Liste genannt websiteheaders. Ich habe die unten Stück code, das macht mich verrückt, dass es nicht richtig funktioniert...
for line in websiteheaders:
if "Server" in line:
print line
Nun das obige Stück code ... genau der gleiche text, beschrieben wird, am Anfang von meinem post. Ich einfach nicht scheinen zu bekommen, warum es das tut...
Als ich gesagt habe, ich will nur drucken Sie die Zeile, die enthält "Server", wenn möglich ohne regex. Und wenn nicht möglich, mit regex.
Bitte um Hilfe und danke!
EDIT: Mein vollständiger code, so weit ist hier eingefügt: http://pastebin.com/sYuZyvX9
EDIT2: der Vollständigkeit halber, in hosts.txt es gibt derzeit 1 host mit Namen "google.com"
Update
Mein code war eigentlich gut funktioniert, aber es war ein Fehler, in einem anderen Stück von meinem code, was dafür sorgt, dass die Daten, die in der Liste websiteheaders war 1 große Zeichenfolge statt mehrerer Einträge. In der obigen Stück code, wird es natürlich finden, "Server" und drucken Sie den gesamten Eintrag, der in meinem Fall war die volle (große) Zeichenkette.
Mit
websiteheaders.verlängern(Kopfzeilen.splitlines())
statt
websiteheaders.append(Header)
Tat den trick für mich. Vielen Dank Jungs.
Was bekommen Sie, wenn Sie
print len(websiteheaders)
direkt vor der for line in websiteheaders:
- Schleife? Eigentlich, was macht print repr(websiteheaders)
geben? (Sie können, Bearbeiten Sie den Ausgang in Ihre Frage.)Es wird Ausgang 1 eigentlich.
dann ist das das problem. Ihre
websiteheaders
ist eine Liste, aber es ist ein Prozess mit einer langen Zeichenfolge gespeichert, die als erstes element. Also da Server
ist in diesem string ist, geht es und druckt es. Statt websiteheaders.append(headers)
verwenden websiteheaders.extend(headers.splitlines())
, so dass Sie eine Liste mit jeder Zeile.Danke das war in der Tat die richtige Antwort. Ich dachte immer, das Anhängen war der Weg zu gehen.
InformationsquelleAutor bryanvan | 2012-12-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist
websiteheaders
wirklich eine Liste, die aufgeteilt für die Zeile? Denn wenn es eine Zeichenfolge, die Sie verwenden sollten:Auch ein guter Tipp: ich würde empfehlen, hinzufügen von ein paar
print
-Aussagen auf die Begegnung mit dieser Art von Problemen. Wenn Sie hätte etwas wie:Hättest du wahrscheinlich heute, dass diese Schleife nicht Durchlaufen jede Zeile, die aber über jedes Zeichen.
Update
Kann ich nicht Pipi, was ist falsch mit Ihrem code. Dies ist, was ich bekomme:
Du hast Recht. Ich Editiere es. Thnx!
Ja, websiteheaders ist eine Liste. Wenn ich implementieren Sie obigen code bekomme ich folgende Fehlermeldung: AttributeError: 'list' - Objekt hat kein Attribut 'splitlines'
Oh, ok. Dann ist meine Annahme falsch war.
wie kommen Sie zu Ihrem websiteheaders variable ...
InformationsquelleAutor Niclas Nilsson
InformationsquelleAutor Skyler