2009-08-19 1 views
9

URL을 중첩 된 튜플로 변환하는 데 어려움을 겪고 있습니다. 내가 잘못 뭐하는 거지어떻게하면 URL 쿼리 문자열을 파이썬을 사용하는 튜플 목록으로 변환 할 수 있습니까?

url = 'http://somesite.com/?foo=bar&key=val' 
url = url.split('?') 
get =() 
for param in url[1].split('&'): 
    get = get + param.split('=') 

:

# Convert this string 
str = 'http://somesite.com/?foo=bar&key=val' 

# to a tuple like this: 
[(u'foo', u'bar'), (u'key', u'val')] 

는 내가 일을 할 뭔가를해야 할 것 같은데요? 감사!

답변

28

나는 urlparse 모듈을 찾고 있다고 생각합니다.

이 모듈은 URL 문자열로 다시 구성 요소 을 결합, (계획, 네트워크 위치, 경로 등을 주소) 구성 요소 년을 문자열 통일 자원 로케이터 (URL)를 깰 표준 인터페이스를 정의 및 소정의 절대적 URL로 에게 "상대적 URL을"변환 여기

는 예는 "베이스 URL."

,는

출력 :이 예에서

[('foo', 'bar'), ('key', 'val')] 

I는 제 I가리스트에 쿼리 스트링을 (다섯 번째 요소 urlparse에서 리턴) 깰 parse_qsl 함수를 사용해서 전체 URL을 해석 할 urlparse 함수를 사용 튜플의

+0

와우, 완벽합니다. 감사! – orwellian

0

앤드류의 답변은 정말 유익하고 도움이되었습니다. 정규 표현식으로 될 그 PARAMS을 잡기 위해 덜 숙달 방법 - 이런 일이 :

수입 재

re_param = re.compile(r'(?P<key>w\+)=(?P<value>w\+)') 

url = 'http://somesite.com/?foo=bar&key=val'' 
params_list = re_param.findall(url) 

또한, 코드에서 당신이 목록을 연결하려고하고있는 것처럼 보인다 튜플 -

for param in url[1].split('&'): 
    get = get + param.split('=') 

튜플로 get을 만들었지 만 str.split은 목록을 반환합니다. 코드가 수정 될 수 있습니다.

for param in url[1].split('&'): 
    get = get + tuple(param.split('=')) 
+2

나는 이것을 오래 전에 올렸습니다 .... – twneale

관련 문제