在base64字符串中每76个字符后插入换行符

时间:2010-05-20 08:01:05

标签: python base64

我试图将位图图像转换为base64字符串,然后将其作为二进制blob插入数据库。 base64字符串需要以每76个字符后的新行字符进行编码。这样做的最好的pythonic方式是什么?

5 个答案:

答案 0 :(得分:10)

对于Python版本3:

import base64
base64.encodebytes(s)

https://docs.python.org/3/library/base64.html#base64.encodebytes

  

对类似字节的对象进行编码,该对象可以包含任意二进制数据,并返回包含base64编码数据的字节,在每76个字节的输出后插入换行符(b'\ n'),并确保存在一个尾随换行符,符合RFC 2045(MIME)。

示例:

>>> print(base64.encodebytes(b'a' * 100).decode())
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==

>>> 

对于Python版本2:

import base64
base64.encodestring(s)

http://docs.python.org/library/base64.html

  

对字符串s进行编码,该字符串可以包含任意二进制数据,并返回包含一行或多行base64编码数据的字符串。 encodestring()返回一个包含一行或多行base64编码数据的字符串,该数据总是包含一个额外的尾随换行符('\ n')。

版本2的文档当然可以更清楚地编写,但它可以满足您的需求。

示例:

>>> print base64.encodestring('a'*100)
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==

>>> 

答案 1 :(得分:9)

'\n'.join(s[pos:pos+76] for pos in xrange(0, len(s), 76))

答案 2 :(得分:3)

如果您想要换行,请不要使用直接的base64软件包,请使用电子邮件中提供的软件包:

import email
print email.base64MIME.encode(your_string)

它将每个76个字符的编码字符串拆分

答案 3 :(得分:1)

由于Base64强制使用固定的行长度(64或76个字符,具体取决于which version you look at),因此生成Base64字符串的库应该已经这样做了(或至少有一个选项可以这样做)。

答案 4 :(得分:0)

您应该使用严格的编码。这将添加一个新行

'your_string_goes_here'.encode('base64', 'strict')