Python ldap3问题:如何将LDAP返回的mail转为字符串存入列表/字典
解决LDAP查询结果存入列表格式异常问题
问题根源:你拿到的
ldap_conn.entries[0].mail并非原生字符串,而是LDAP库返回的属性对象。直接print(test)时,对象的内置字符串方法会输出邮箱内容,但把对象存入列表后,打印列表会显示对象的完整标识(带mail:前缀)。两种解决方式:
- 方式1:提取对象的实际值(多数LDAP库如python-ldap3会提供
.value属性):test = ldap_conn.entries[0].mail.value - 方式2:强制转换为字符串:
test = str(ldap_conn.entries[0].mail)
- 方式1:提取对象的实际值(多数LDAP库如python-ldap3会提供
修改后的完整代码:
basedn = config['ldap']['basedn'] attribs = ['mail'] data = [] for account in logon_name: sfilter = f'(cn={account})' ldap_conn.search( basedn, sfilter, attributes=attribs ) if ldap_conn.entries: test = ldap_conn.entries[0].mail.value data.append([account, test]) print(test) print(data)效果验证:修改后存入列表的
test是纯邮箱字符串,列表输出会变为[['xxxxx', 'aaaaaaa.aaaaaaaaa@aaaaa.aaaa']],符合预期格式。
内容的提问来源于stack exchange,提问作者user15106307
相关产品推荐
相关产品推荐

