<p>如果要切换的字符只有<code>+</code>和<code>\</code>,则可以使用<a href="https://docs.python.org/2/library/base64.html#base64.urlsafe_b64encode" rel="nofollow noreferrer">base64.urlsafe_b64encode</a>分别替换为<code>-</code>和<code>_</code>。你知道吗</p>
<pre><code>>>> base64.urlsafe_b64encode(data.encode())
b'c29tZSByYW5kb20_IGRhdGE='
</code></pre>
<p>或者,您可以使用<a href="https://docs.python.org/2/library/base64.html#base64.b64encode" rel="nofollow noreferrer">base64.b64encode</a>的可选参数将这些字符替换为您自己选择的字符:</p>
<pre><code>>>> base64.b64encode(data.encode(), '*&'.encode())
b'c29tZSByYW5kb20&IGRhdGE='
</code></pre>
<p>如果你需要使用一个全新的字母表,你可以这样做</p>
<pre><code>import base64
data = 'some random? data'
print(base64.b64encode(data.encode()))
std_base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
custom = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"
x = base64.b64encode(data.encode())
print(bytes(str(x)[2:-1].translate(str(x)[2:-1].maketrans(std_base64chars, custom)), 'utf-8'))
</code></pre>
<p>输出:</p>
<pre><code>b'c29tZSByYW5kb20/IGRhdGE='
b'C29TzsbYyw5KB20_igrHDge='
</code></pre>