2016-01-15 3 views
-2

извлечь набор данных строки:Поиска в списке кортежей

(u"[('x-xss-protection', '1; mode=block'), ('x-powered-by', 'PHP/5.4.21 ZendServer/6.2.0'), ('transfer-encoding', 'chunked'), ('expires', '0'), ('vary', 'Accept-Encoding'), ('server', 'nginx'), ('last-modified', 'Thu, 03 Dec 2015 10:20:02 GMT'), ('connection', 'keep-alive'), ('pragma', 'no-cache'), ('cache-control', 'must-revalidate, post-check=0, pre-check=0, public'), ('date', 'Thu, 03 Dec 2015 10:20:02 GMT'), ('x-cached', 'EXPIRED'), ('content-type', 'text/html')]",) 

Я хотел бы найти «тип содержимого». Я пытался Dict, список, перечислим, ул ... Но ничего не работает: (

+0

«x-xss-protection» или «x-xss-protection»? –

+2

Это не список кортежей. это единственный кортеж со строкой в ​​нем –

+0

«x-xss-protection», вы правы. Я удалил некоторые данные :) – Anonymus

ответ

6

Строка в вашем наборе выглядит как список, я бы предложил использовать ast.literal_eval(), чтобы преобразовать его в реальный список, а затем преобразовать его в Словаре (просто запустить dict() функцию), а также использовать 'content-type' в качестве ключа для доступа к 'text/html' (значение):

import ast 
t = (u"[('x-xss-protection', '1; mode=block'), ('x-powered-by', 'PHP/5.4.21 ZendServer/6.2.0'), ('transfer-encoding', 'chunked'), ('expi res', '0'), ('vary', 'Accept-Encoding'), ('server', 'nginx'), ('last-modified', 'Thu, 03 Dec 2015 10:20:02 GMT'), ('connection', 'keep-alive '), ('pragma', 'no-cache'), ('cache-control', 'must-revalidate, post-check=0, pre-check=0, public'), ('date', 'Thu, 03 Dec 2015 10:20:02 GMT '), ('x-cached', 'EXPIRED'), ('content-type', 'text/html')]",) 
dict(ast.literal_eval(t[0]))['content-type'] 

Выход:

'text/html' 
+0

Если вы храните этот тип данных в базе данных, это способ доступа к нему? – Anonymus

+1

@Anonymus: Если данные в базе данных похожи на ваш пример: Да. В противном случае вы можете задать новый вопрос. –