Imprimer ligne contenant “mot” python

Je voudrais imprimer SEULEMENT la ligne qui contient "Serveur" dans le dessous de la pièce de sortie:

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

Cette information est récupérée à partir d'une liste appelée websiteheaders. J'ai le dessous de morceau de code qui me rend fou qu'il ne fonctionne pas correctement...

for line in websiteheaders:
    if "Server" in line:
        print line

Maintenant au-dessus de cette partie de code imprime exactement le même bloc de texte qui est décrit au début de mon post. J'ai juste ne semble pas comprendre pourquoi il le fait...

Comme je l'ai dit, je ne veux imprimer la ligne qui contient "Serveur", si possible sans regex. Et si pas possible, avec la regex.

S'il vous plaît aider et merci!

EDIT: Mon code complet à ce jour est collé ici: http://pastebin.com/sYuZyvX9
EDIT2: Pour être complet, dans hosts.txt il n'y a actuellement 1 hôte nommé "google.com"

Mise à jour

Mon code a été effectivement fonctionne très bien, mais il y avait une erreur dans un autre morceau de mon code qui a veillé à ce que les données qui ont été mises dans la liste websiteheaders était de 1 grande chaîne, au lieu de plusieurs entrées. Dans le ci-dessus morceau de code, il va bien sûr de trouver le "Serveur" et d'imprimer l'ensemble de l'entrée, qui dans mon cas était la (grande) de la chaîne.

À l'aide de

websiteheaders.étendre(en-têtes.splitlines())

au lieu de

websiteheaders.append(en-têtes)

a fait le tour pour moi. Merci beaucoup les gars.

  • montrez-nous où vous créez websiteheaders...
  • Qu'obtenez-vous si vous print len(websiteheaders) juste avant la for line in websiteheaders: boucle? En fait, ce n' print repr(websiteheaders) donner? (Vous pouvez modifier la sortie dans votre question.)
  • Il sera de sortie 1 en fait.
  • alors c'est ça le problème. Votre websiteheaders est une liste, mais c'est une liste avec une longue chaîne de caractères stockée en tant que son premier élément. Donc, depuis Server est dans cette chaîne, il passe et l'imprime. Au lieu de websiteheaders.append(headers), utilisez websiteheaders.extend(headers.splitlines()), de sorte que vous avez une liste contenant chaque ligne.
  • Merci, c'était bien la bonne réponse. J'ai toujours pensé que append était la voie à suivre.
InformationsquelleAutor bryanvan | 2012-12-16