在Python3.8中将带有字节的Python字典转换为字符串

2024-05-12 20:15:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望人们能帮助我。我为任何语法错误提前道歉。我正在进行LDAP数据到MYSQL数据库的大规模移植。python程序I“继承”的LDAP转储。出于性能和维护方面的原因,我们正在将数据移出LDAP,并将其转移到使用MySQL作为后端的web身份验证系统中。出于业务原因,LDAP到webauth的迁移将在明年进行,因此我需要保持这两个系统的同步

使用Python2多年——Python3中的Unicode/UTF-8是一个让我非常痛苦的领域

ldap转储生成以下输出作为执行的一部分

{'sn': [b'Jones'], 'title': [b'WH Trainee'], 'givenName': [b'Example'], 'distinguishedName': [b'CN=Example Jones,OU=Warehouse Trainees,OU=GU,DC=jupiter,DC=somecorp,DC=org'], 'whenCreated': [b'20201027121144.0Z'], 'department': [b'WHSE'], 'sAMAccountName': [b'ejones'], 'manager': [b'CN=Bobby Smith,OU=WHSE,OU=GU,DC=jupiter,DC=somecorp,DC=org']}

格式化以便于阅读: **现有产出**

{
'sn': [b'Jones'], 
'title': [b'WH Trainee'], 
'givenName': [b'Example'], 
'distinguishedName': [b'CN=Example Jones,OU=Warehouse Trainees,OU=GU,DC=jupiter,DC=somecorp,DC=org'], 
'whenCreated': [b'20061027132244.0Z'], 
'department': [b'WHSE'], 
'sAMAccountName': [b'ejones'], 
'manager': [b'CN=Bobby Smith,OU=WHSE,OU=GU,DC=jupiter,DC=somecorp,DC=org']
}

我们需要将此输出转换为字典中的简单字符串、键值对。我希望将其实现为一个简单的函数,可以调用该函数并同时转换字典中的所有值。不幸的是,一些ldap记录缺少诸如部门和经理之类的内容,因此dict中的键和值的数量不同。我需要一种将dict中的字节值转换为普通ascii字符串的方法

使用单个函数调用所需的转换 类似transformdict(dictname)的东西

所需输出

{
'sn': 'Jones', 
'title': 'WH Trainee', 
'givenName': 'Example', 
'distinguishedName': 'CN=Example Jones,OU=Warehouse Trainees,OU=GU,DC=jupiter,DC=somecorp,DC=org', 
'whenCreated': '20061027132244.0Z', 
'department': 'WHSE', 
'sAMAccountName': 'ejones', 
'manager': 'CN=Bobby Smith,OU=WHSE,OU=GU,DC=jupiter,DC=somecorp,DC=org'
}

我们使用Python3.8环境

有什么建议吗


Tags: orgtitleexampleoudccnldapjupiter
1条回答
网友
1楼 · 发布于 2024-05-12 20:15:43

这应该做到:

S = {'sn': [b'Jones'], 'title': [b'WH Trainee'], 'givenName': [b'Example'], 'distinguishedName': [b'CN=Example Jones,OU=Warehouse Trainees,OU=GU,DC=jupiter,DC=somecorp,DC=org'], 'whenCreated': [b'20201027121144.0Z'], 'department': [b'WHSE'], 'sAMAccountName': [b'ejones'], 'manager': [b'CN=Bobby Smith,OU=WHSE,OU=GU,DC=jupiter,DC=somecorp,DC=org']}

dt = {key: value[0].decode("utf-8") for key, value in S.items()}
print(dt)

输出:

{
    "sn": "Jones",
    "title": "WH Trainee",
    "givenName": "Example",
    "distinguishedName": "CN=Example Jones,OU=Warehouse Trainees,OU=GU,DC=jupiter,DC=somecorp,DC=org",
    "whenCreated": "20201027121144.0Z",
    "department": "WHSE",
    "sAMAccountName": "ejones",
    "manager": "CN=Bobby Smith,OU=WHSE,OU=GU,DC=jupiter,DC=somecorp,DC=org"
  }

相关问题 更多 >