HTTP에서 벗어난 파이썬 문자열
문제
HTTP 헤더에서 문자열이 있지만 탈출되었습니다. 에스케이프에 어떤 기능을 사용할 수 있습니까?
myemail%40gmail.com -> myemail@gmail.com
urllib.unquote ()가 갈 길이 될까요?
해결책
나는 urllib의 것이 확실하다 unquote
이것을하는 일반적인 방법입니다.
>>> import urllib
>>> urllib.unquote("myemail%40gmail.com")
'myemail@gmail.com'
또한 있습니다 unquote_plus
:
unquote ()와 마찬가지로 HTML 양식 값을 선택하지 않기 위해 필요한대로 공간별로 + 표시를 대체합니다.
다른 팁
예, 그게 보입니다 urllib.unquote()
그 작업을 수행합니다. (나 코드 패드에서 예제에 대해 테스트했습니다.)
Python 3에서는 이러한 기능이 있습니다 urllib.parse.unquote
그리고 urllib.parse.unquote_plus
.
후자는 예를 들어 공간 문자 인 HTTP URL의 쿼리 문자열에 사용됩니다 () 전통적으로 플러스 캐릭터로 인코딩됩니다 (
+
), 그리고 +
백분율 인코딩됩니다 %2B
.
이것들 외에도 있습니다 unquote_to_bytes
주어진 인코딩 된 문자열을 변환합니다 bytes
, 인코딩이 알려지지 않았거나 인코딩 된 데이터가 이진 데이터 일 때 사용할 수 있습니다. 그러나 아무도 없습니다 unquote_plus_to_bytes
, 필요한 경우 할 수 있습니다.
def unquote_plus_to_bytes(s):
if isinstance(s, bytes):
s = s.replace(b'+', b' ')
else:
s = s.replace('+', ' ')
return unquote_to_bytes(s)
사용 여부에 대한 자세한 정보 unquote
또는 unquote_plus
이용 가능합니다 우주 문자 인코딩 URL : + 또는 %20.
제휴하지 않습니다 StackOverflow