Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中匹配并解码文件中的base64值_Python_Base64 - Fatal编程技术网

在python中匹配并解码文件中的base64值

在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

我有一个文件,a.txt,它的内容如下

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是什么