2010-09-13 3 views
1
a = line.splitlines()[:2] 

J'ai reçu cette sortie comme indiqué ci-dessous.extraction d'éléments individuels résultant d'une opération de division de chaîne()

['GET /en/html/dummy.php?name=MyName&married=not+single &male=yes HTTP/1.1'] 
['Host: www.explainth.at'] 
['User-Agent: Mozilla/5.0 (Windows;en-GB; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11'] 
['Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'] 
['Accept-Language: en-gb,en;q=0.5'] 
['Accept-Encoding: gzip,deflate'] 
['Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'] 
['Keep-Alive: 300'] 

Je veux obtenir les deux premiers éléments:

GET /en/html/dummy.php?name=MyName&married=not+single &male=yes HTTP/1.1 
Host: www.explainth.at 
+1

L'espace dans '/en/html/dummy.php?name=MyName&married=not+single & male = yes' n'est pas autorisé. – Gumbo

Répondre

1

pour obtenir 2 premiers articles.

a[:2] 
1

Le champ d'en-tête hôte est pas nécessairement le premier champ d'en-tête après la ligne d'état. Ainsi, au lieu d'obtenir les deux premières lignes, vous devez faire quelque chose comme ceci:

lines[0] + [line for line in lines[1:] if line[0][0:5].lower() == 'host:'] 

La compréhension de la liste lines[0] + [line for line in lines[1:] if line[0][0:5].lower() == 'host:'] ne retournera la ligne si elle commence par Host:.

0
>>> a = ['GET /en/html/dummy.php?name=MyName&married=not+single &male=yes HTTP/1.1', 
... 'Host: www.explainth.at', 
... 'User-Agent: Mozilla/5.0 (Windows;en-GB; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11', 
... 'Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 
... 'Accept-Language: en-gb,en;q=0.5', 
... 'Accept-Encoding: gzip,deflate', 
... 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
... 'Keep-Alive: 300'] 
>>> getstr=a.pop(0) 
>>> adict = dict(x.partition(':')[::2] for x in a) 
>>> adict['Host'] 
' www.explainth.at' 
Questions connexes