을 사용한 후 cgi.parse_qs()
결과 (사전)를 쿼리 문자열로 다시 변환하는 방법은 무엇입니까? 와 비슷한 것을 찾고 urllib.urlencode()
있습니다.
답변
파이썬 3
urllib.parse.
urlencode
(쿼리, doseq = False, […])변환 매핑 객체 또는 캐릭터 라인을 포함 또는 퍼센트로 인코딩 된 ASCII 텍스트 문자열, 객체를 바이트 수있는 두 가지 요소 튜플의 순서를.
A dict
는 매핑입니다.
레거시 Python
urllib.urlencode
(query
[,doseq
])
변환 매핑 객체 또는 “퍼센트 인코딩”문자열 개의 원소 튜플 시퀀스 … 일련의key=value
쌍으로 구분'&'
문자 …
답변
python3에서는 약간 다릅니다.
from urllib.parse import urlencode
urlencode({'pram1': 'foo', 'param2': 'bar'})
산출: 'pram1=foo¶m2=bar'
python2 및 python3 호환성을 위해 다음을 시도하십시오.
try:
#python2
from urllib import urlencode
except ImportError:
#python3
from urllib.parse import urlencode
답변
당신은 정확히 같은 것을 찾고 있습니다 urllib.urlencode()
!
그러나 호출 할 때 parse_qs()
(에서 구별됨 parse_qsl()
) 사전 키는 고유 한 쿼리 변수 이름이고 값 은 각 이름에 대한 값 목록입니다 .
이 정보를에 전달 urllib.urlencode()
하려면 이러한 목록을 “평탄화”해야합니다. 다음은 튜플의 목록을 이해하는 방법입니다.
query_pairs = [(k,v) for k,vlist in d.iteritems() for v in vlist]
urllib.urlencode(query_pairs)
답변
아마도 다음과 같은 것을 찾고있을 것입니다.
def dictToQuery(d):
query = ''
for key in d.keys():
query += str(key) + '=' + str(d[key]) + "&"
return query
사전을 가져 와서 urlencode처럼 쿼리 문자열로 변환합니다. 쿼리 문자열에 마지막 “&”를 추가하지만 return query[:-1]
문제가있는 경우 수정합니다.