在python中匹配并解码文件中的base64值
我有一个文件,a.txt,它的内容如下在python中匹配并解码文件中的base64值,python,base64,Python,Base64,我有一个文件,a.txt,它的内容如下 dn: cn=user,o=abc changetype: add nrfLastNotificationTime: 6253451636514 srvprvUserPrefsPlus:: sytdrrr65mVyc2lvbhgsf56a56sda6rtGluZz0iVVRGLTgiPzuysdyfs765== srvprvUUID: hsfytf5e5 uid: 654sfdg givenName: stdftst fullName: ytfsdytsf
dn: cn=user,o=abc
changetype: add
nrfLastNotificationTime: 6253451636514
srvprvUserPrefsPlus:: sytdrrr65mVyc2lvbhgsf56a56sda6rtGluZz0iVVRGLTgiPzuysdyfs765==
srvprvUUID: hsfytf5e5
uid: 654sfdg
givenName: stdftst
fullName: ytfsdytsfty
我希望解析这个文件并解码base64值(如果存在)。
例如,srvprvUserPrefsPlus属性具有base64值
我试过这个密码
import re
import base64
obj_list = []
with open('a.txt', 'r') as input_file:
s = line.split(":",1)
temp_dict = {}
k=s[0].strip()
v=s[1].strip()
if re.match(r'^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$',v):
v1 = base64.b64decode(v)
v2 = str(v1).encode("utf-8")
temp_dict.update({k:v2})
obj_list.append(temp_dict)
temp_dict={}
else:
temp_dict.update({k:v})
obj_list.append(temp_dict)
temp_dict={}
with open('b.txt',"w") as f1:
for obj in obj_list:
for k, v in obj.items():
f1.write(str(k))
f1.write(':')
f1.write(str(v))
f1.write("\n")
f1.write("\n")
但是它没有像预期的那样工作,这里需要改进什么。为什么要麻烦使用复杂的正则表达式,而不是仅仅使用
r'[A-Za-z0-9+/]+=?=?'
?这并不是说base64
模块关心正则表达式的长度。我可以通过在正则表达式中的^s之后添加:\s来解决这个问题。预期的解码值为\n“但我得到的是b'b\'\\n\''这些额外的b是什么