Что можно использовать вместо функции parse_qs - PullRequest
4 голосов
/ 10 января 2011

У меня есть следующий код для разбора канала YouTube и возврата идентификатора фильма YouTube.Как я могу переписать это, чтобы быть совместимым с Python 2.4, который, я полагаю, не поддерживает parse_qs функцию?

YTSearchFeed = feedparser.parse("http://gdata.youtube.com" + path)
videos = []
for yt in YTSearchFeed.entries:
    url_data = urlparse.urlparse(yt['link']) 
    query = urlparse.parse_qs(url_data[4])
    id = query["v"][0]
    videos.append(id) 

Ответы [ 2 ]

12 голосов
/ 10 января 2011

Я полагаю, ваш существующий код работает в версии 2.6 или новее, и вы пытаетесь вернуться к версии 2.4? parse_qs был в модуле cgi до того, как был перемещен в urlparse. Попробуйте import cgi, cgi.parse_qs.

Вдохновленный комментарием TryPyPy , я думаю, что вы можете запустить исходный код в любой среде, выполнив:

import urlparse # if we're pre-2.6, this will not include parse_qs
try:
    from urlparse import parse_qs
except ImportError: # old version, grab it from cgi
    from cgi import parse_qs
    urlparse.parse_qs = parse_qs

Но у меня нет 2,4, чтобы попробовать это, поэтому никаких обещаний.

0 голосов
/ 28 января 2011

Я попробовал это, и все же .. это не сработало.

Проще просто скопировать функции parse_qs / qsl из модуля cgi в модуль urlparse.

Проблема решена.

...