从Python3中的base64编码字符串中删除新行"\n"?

Mo.*_*Mo. 20 python base64 python-3.x

我正在尝试在Python3中建立HTTPS连接,当我尝试编码我的用户名和密码时,该base64 encodebytes方法返回编码值,并在末尾"\n"处添加一个新行字符,因此我收到错误时我尝试连接.

有没有办法告诉base64库在编码时不要追加新的行字符或删除这个新行字符的最佳方法是什么?我尝试使用该replace方法,但我收到以下错误:

Traceback (most recent call last):
  File "data_consumer.py", line 33, in <module>
    auth_base64 = auth_base64.replace('\n', '')
TypeError: expected bytes, bytearray or buffer compatible object
Run Code Online (Sandbox Code Playgroud)

我的代码:

auth = b'username@domain.com:passWORD'
auth_base64 = base64.encodebytes(auth)
auth_base64 = auth_base64.replace('\n', '')
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

Man*_*aze 52

而不是encodestring考虑使用b64encode.以后不添加\n字符.例如

In [11]: auth = b'username@domain.com:passWORD'

In [12]: base64.encodestring(auth)
Out[12]: b'dXNlcm5hbWVAZG9tYWluLmNvbTpwYXNzV09SRA==\n'

In [13]: base64.b64encode(auth)
Out[13]: b'dXNlcm5hbWVAZG9tYWluLmNvbTpwYXNzV09SRA=='
Run Code Online (Sandbox Code Playgroud)

它产生相同的编码字符串,除了 \n

  • 注意:在Python 3中,将base64.standard_b64encode(s)定义为return b64encode(s),因此调用base64.b64encode(s)很好。 (2认同)

Sar*_*ari 6

以下代码可行

auth_base64 = auth_base64.decode('utf-8').replace('\n', '')
Run Code Online (Sandbox Code Playgroud)


Har*_*rsh 5

对于 Python 3 使用:

binascii.b2a_base64(cipher_text, newline=False)
Run Code Online (Sandbox Code Playgroud)

对于 Python 2 使用:

binascii.b2a_base64(cipher_text)[:-1]
Run Code Online (Sandbox Code Playgroud)