在Base64字符串每76个字符后插入换行符
我正在尝试把位图图片转换成一个base64字符串,然后再把它作为二进制数据插入到数据库里。这个base64字符串需要按照特定的方式编码,也就是说每76个字符后面要加一个换行符。用Python有什么好的方法可以做到这一点呢?
5 个回答
3
如果你想要换行的话,不要使用普通的base64包,应该用邮件里提供的那个:
import email
print email.base64MIME.encode(your_string)
这个会把编码后的字符串每76个字符分成一段
12
对于Python 3版本:
import base64
base64.encodebytes(s)
https://docs.python.org/3/library/base64.html#base64.encodebytes
这个功能可以把像字节一样的对象s进行编码,这个对象可以包含任何二进制数据。它会返回一个包含经过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()函数返回的字符串总是会包含一个额外的换行符('\n')。
虽然版本2的文档写得不够清晰,但它能满足你的需求。
示例:
>>> print base64.encodestring('a'*100)
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==
>>>
9
'\n'.join(s[pos:pos+76] for pos in xrange(0, len(s), 76))
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。