2016-09-26 5 views
0

Я пытаюсь извлечь текст из запроса url, но не все dict содержат ключ с текстом, и когда я пытаюсь использовать {k: v[0] for k, v in parse_qs(str).items()} для URL-адресов, я теряю много запросов, поэтому я пробую str = urllib.unquote(u[0]). После этого я получаю строки, какPython: извлечь текст из строки

смотреть лучше не бывает&clid=1955453&win=176 
Jade+Jantzen&ie=utf-8&oe=utf-8&gws_rd=cr&ei=FQB0V9WbIoahsAH5zZGACg 
как+скрыть+лопоухость&newwindow=1&biw=1366&bih=657&source=lnms&sa=X&sqi=2&pjf=1&ved=0ahUKEwju5cPJy83NAhUPKywKHVHXBesQ_AUICygA&dpr=1 
смотреть лучше не бывает&clid=1955453&win=176 
2&clid=1976874&win=85&msid=1467228292.64946.22901.24595&text=как выбрать смартфон 
маскаи гейла&lr=10750&clid=1985551-210&win=213 

И я хочу, чтобы получить

смотреть лучше не бывает 
Jade Jantzen 
как скрыть лопоухость 
смотреть лучше не бывает 
как выбрать смартфон 
маскаи гейла 

Есть ли способ извлечь это?

ответ

1

Просто расщепляются & и взять первую часть:

txt = urllib.unquote(u[0]).split("&")[0] 

И не используйте str в качестве имени переменной - это встроенный в имени типа в Python.

РЕДАКТИРОВАТЬ: К сожалению, этот 2&clid=1976874&win=85&msid=1467228292.64946.22901.24595&text=как выбрать смартфон линия имеет различный характер, чем другие. Нет общего способа справиться с этим вместе с другими. У меня возникло соблазн использовать регулярное выражение для соответствия кириллическим символам, но Jade Jantzen не совпало. Итак, для этой одной строки, где нужный текст находится в конце, что-то вроде

txt = urllib.unquote(u[0]).split("=")[-1] 

будет работать. Тем не менее, вы не указали никаких реальных критериев для желаемого текста. Как люди, мы можем сказать, как превратить то, что вы получаете в то, что вы хотите от этого конкретного образца. Но без четких правил того, что нужно сопоставить, мы не можем предоставить полное решение.

Я знаю, что некоторые (еще некоторые) из линий имеют "+" вместо " ". Это можно решить с помощью .replace("+", " ").

+0

и можете сказать, если строка выглядит как '213 & msid = 1466344978.51184.22872.22654 & text = дэрил диксон' –

+1

Я пропустил эту одну строку. Не будет общего способа справиться с этим вместе с другими. Для этого раскол должен произойти на '=', и последняя часть должна быть взята. – ElmoVanKielmo

Смежные вопросы