Python에서 URL 매개 변수를 백분율 인코딩하는 방법은?
하면
url = "http://example.com?p=" + urllib.quote(query)
- 인코딩이 안 된다.
/
로%2F
(OAuth 정규화 중단) - 유니코드를 처리하지 않음(예외를 발생)
더 좋은 도서관이 있을까?
파이톤 2
설명서:
urllib.quote(string[, safe])
%xx 이스케이프를 사용하여 문자열의 특수 문자를 교체하십시오.문자, 숫자, 문자 '_yod'는 절대 인용되지 않는다.기본적으로 이 기능은 URL의 경로 섹션을 인용하기 위한 것이다.옵션인 안전 매개변수는 인용되지 않아야 하는 추가 문자를 지정하며, 기본값은 '/'이다.
그것은 통과를 의미한다.''
안전하게 첫 번째 문제를 해결하십시오.
>>> urllib.quote('/test')
'/test'
>>> urllib.quote('/test', safe='')
'%2Ftest'
두 번째 이슈에 대해, 그것에 대한 버그 리포트가 있다.분명히 그것은 파이톤 3에서 고쳐졌다.다음과 같이 UTF-8로 인코딩하여 해결할 수 있다.
>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller
그런데, URLencode를 한 번 보십시오.
파이톤 3
Python 3에서는 함수가 다음으로 이동되었다.urllib.parse
:
>>> import urllib.parse
>>> print(urllib.parse.quote("Müller".encode('utf8')))
M%C3%BCller
>>> print(urllib.parse.unquote("M%C3%BCller"))
Müller
Python 3에서는 로 이동되었으며 기본적으로 유니코드를 처리한다.
>>> from urllib.parse import quote
>>> quote('/test')
'/test'
>>> quote('/test', safe='')
'%2Ftest'
>>> quote('/El Niño/')
'/El%20Ni%C3%B1o/'
내 생각에 모듈requests
훨씬 낫다.에 기반을 두고 있다.urllib3
.
다음을 시도해 보십시오.
>>> from requests.utils import quote
>>> quote('/test')
'/test'
>>> quote('/test', safe='')
'%2Ftest'
내 대답은 파올로의 대답과 비슷하다.
장고를 사용하는 경우 urlquote를 사용할 수 있다.
>>> from django.utils.http import urlquote
>>> urlquote(u"Müller")
u'M%C3%BCller'
Python을 변경하면 이제 기존 포장지가 된다는 것을 의미한다는 점에 유의하십시오.django.utils에 대한 django 2.1 소스 코드에서.http:
A legacy compatibility wrapper to Python's urllib.parse.quote() function.
(was used for unicode handling on Python 2)
사용하는 것이 좋다.urlencode
여기서. 단일 파라미터에 대해서는 큰 차이가 없지만 IMHO에서는 코드를 더 선명하게 만든다.(기능을 보면 헷갈려 보인다.quote_plus
! - 특히 다른 언어에서 온 사람들 말이다.)
In [21]: query='lskdfj/sdfkjdf/ksdfj skfj'
In [22]: val=34
In [23]: from urllib.parse import urlencode
In [24]: encoded = urlencode(dict(p=query,val=val))
In [25]: print(f"http://example.com?{encoded}")
http://example.com?p=lskdfj%2Fsdfkjdf%2Fksdfj+skfj&val=34
문서화
참조URL: https://stackoverflow.com/questions/1695183/how-can-i-percent-encode-url-parameters-in-python
'IT이야기' 카테고리의 다른 글
Vuejs를 사용하여 요소 높이 가져오기 (0) | 2022.03.08 |
---|---|
vuexfire가 상태를 업데이트하지 않고 UI를 올바르게 업데이트하는 이유 (0) | 2022.03.08 |
Vue의 하위 구성 요소와 개체 속성 동기화 (0) | 2022.03.08 |
React/Redex 아키텍처에서 API 호출을 수행할 위치 (0) | 2022.03.08 |
"vue-discript-theplate"를 typecript base로 변환하는 데 문제가 있으십니까? (0) | 2022.03.07 |