Tôi đã nhận được một chuỗi từ tiêu đề HTTP, nhưng nó đã được thoát. Tôi có thể sử dụng chức năng nào để hủy cảnh báo?Unescape Python Strings Từ HTTP
myemail%40gmail.com -> [email protected]
Urllib.unquote() có phải là cách để đi không?
Tôi đã nhận được một chuỗi từ tiêu đề HTTP, nhưng nó đã được thoát. Tôi có thể sử dụng chức năng nào để hủy cảnh báo?Unescape Python Strings Từ HTTP
myemail%40gmail.com -> [email protected]
Urllib.unquote() có phải là cách để đi không?
Tôi khá chắc chắn rằng urllib's unquote
là cách phổ biến để thực hiện việc này.
>>> import urllib
>>> urllib.unquote("myemail%40gmail.com")
'[email protected]'
Ngoài ra còn có unquote_plus
:
Giống như unquote(), mà còn thay thế cộng với dấu hiệu bằng dấu cách, theo yêu cầu cho unquoting giá trị dạng HTML.
Có, có vẻ như urllib.unquote()
hoàn thành nhiệm vụ đó. (I tested it against your example on codepad.)
Trong Python 3, các chức năng này là urllib.parse.unquote
và urllib.parse.unquote_plus
.
Sau đó được sử dụng ví dụ cho các chuỗi truy vấn trong URL HTTP, nơi các nhân vật không gian () đều được truyền thống mã hóa như cộng ký tự (
+
), và +
là trăm mã hóa để %2B
. Ngoài ra, còn có unquote_to_bytes
chuyển đổi chuỗi được mã hóa đã cho thành bytes
, có thể được sử dụng khi mã hóa không được biết hoặc dữ liệu được mã hóa là dữ liệu nhị phân. Tuy nhiên không có unquote_plus_to_bytes
, nếu bạn cần đến nó, bạn có thể làm:
def unquote_plus_to_bytes(s):
if isinstance(s, bytes):
s = s.replace(b'+', b' ')
else:
s = s.replace('+', ' ')
return unquote_to_bytes(s)
biết thêm thông tin về việc có nên sử dụng unquote
hoặc unquote_plus
có sẵn tại URL encoding the space character: + or %20.
K, chỉ muốn chắc chắn .. Tôi ghét sử dụng một chức năng xuất hiện để thực hiện công việc, nhưng cuối cùng chỉ làm việc với một vài ví dụ mà tôi đã làm và phá vỡ với các vars thế giới thực. heh. Sau đó, nó sẽ trở thành không thể theo dõi vấn đề ..: P – Ian