在Python3中,多行base64字符串解码后仅返回最后一行的原因是因为在解码过程中,Python的base64库默认会忽略掉非法字符和换行符。当解码多行base64字符串时,Python会将每一行的base64编码字符串解码为二进制数据,并将结果拼接在一起。然而,如果在解码过程中遇到非法字符或换行符,Python会自动忽略它们。
为了解决这个问题,我们可以使用base64.b64decode()
函数对整个多行base64字符串进行解码,然后再进行拆分处理。以下是一个示例代码:
import base64
# 多行base64字符串
multi_line_base64 = '''
SGVsbG8gd29ybGQK
d29ybGQgaGVsbG8K
dGhpcyBpcyBhIHN0
cmluZyB0ZXN0Cg==
'''
# 解码多行base64字符串
decoded_data = base64.b64decode(multi_line_base64)
# 拆分解码后的数据
lines = decoded_data.splitlines()
# 输出每一行的内容
for line in lines:
print(line.decode())
在上述代码中,我们首先使用base64.b64decode()
函数对多行base64字符串进行解码,得到解码后的二进制数据。然后,我们使用splitlines()
方法将解码后的数据按行拆分成一个列表。最后,我们遍历列表并使用decode()
方法将每一行的二进制数据转换为字符串并进行输出。
需要注意的是,如果多行base64字符串中存在非法字符或换行符,解码过程可能会出现错误。在实际应用中,我们可以根据具体情况进行错误处理或数据清洗。
关于base64编码和解码的更多信息,您可以参考腾讯云的相关产品文档:base64编码和解码。
领取专属 10元无门槛券
手把手带您无忧上云