如何在Python中对字符串进行编码和解码以用于URL?
我有一个这样的字符串:
String A: [ 12234_1_Hello'World_34433_22acb_4554344_accCC44 ]
我想把字符串A加密,这样它可以用在干净的URL里。比如说像这样:
String B: [ cYdfkeYss4543423sdfHsaaZ ]
在Python里有没有一个编码的接口,给我字符串A,它能返回字符串B?还有没有一个解码的接口,给我字符串B,它能返回字符串A?
8 个回答
6
你是想对字符串进行加密,还是想编码以去掉网址中的非法字符呢?如果是后者,你可以使用 urllib.quote
:
>>> quoted = urllib.quote("12234_1_Hello'World_34433_22acb_4554344_accCC44")
>>> quoted
'12234_1_Hello%27World_34433_22acb_4554344_accCC44'
>>> urllib.unquote(quoted)
"12234_1_Hello'World_34433_22acb_4554344_accCC44"
13
请注意,编码和加密是两回事。
如果你想发送一些敏感信息,那就不要使用上面提到的编码方法;)
9
一种进行编码和解码的方法是使用base64这个包,下面是一个例子:
import base64
import sys
encoded = base64.b64encode(sys.stdin.read())
print encoded
decoded = base64.b64decode(encoded)
print decoded
这是不是你想要的?在你的具体情况下,你得到的结果是:
输入:12234_1_Hello'World_34433_22acb_4554344_accCC44
编码后的结果:MTIyMzRfMV9IZWxsbydXb3JsZF8zNDQzM18yMmFjYl80NTU0MzQ0X2FjY0NDNDQ=
解码后的结果:12234_1_Hello'World_34433_22acb_4554344_accCC44