问题:
是在对labelme标注的目标检测*.json文件,进行数据增强扩充的时候,使用到了base64进行编码解码,然后发现新的*.json文件中的“imagedata“多了一个b'xxxx',即得到的编码结果前带有 b
查阅资料之后问题来源:
使用base64进行编码解码,Python3的字符串的编码语言用的是unicode编码,由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干字节,如果要在网络上传输,或保存在磁盘上就需要把str变成以字节为单位的bytes.
解决方法:
查阅到的方法:用str再转换一次,# 去掉编码结果前的 b
username="admin"
password="lian2020"
aa=base64.b64encode(username.encode("utf-8"))
print (aa)
print (str(aa,'utf-8'))
bb=base64.b64encode(password.encode("utf-8"))
print (str(bb))
print (str(bb,'utf-8'))
打印结果:
b'YWRtaW4='
YWRtaW4=
b'bGlhbjIwMjA='
bGlhbjIwMjA=
我自己代码里用的方法:
base64_data_original = str(base64.b64encode(b64.read()))
# 修改补充了两句
match_pattern=re.compile(r'b\'(.*)\'')
base64_data=match_pattern.match(base64_data_original).group(1)
再次输出的结果就正常去掉了b'