从嵌入在列表中的元组中提取字符串,python3

2024-06-11 18:31:41 发布

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

提前道歉如果这个问题已经被问到,已经做了一些搜索,但没有运气。在

尝试将元组的第二部分作为字符串拉出。在

我正在用python3构建一个脚本,它从LDAP中提取信息并返回希望是可操作的数据。在

def GetMembersWDept():
    i2 = input('Please input the department number. Examples: 2410, 2417\n')
    criteria = '(&(objectClass=User)(department=' + i2 + '*))'
    print ('Search criteria set to: \t\t' + criteria)
    searchDC = 'dc=example,dc=com'
    print ('Searching location: \t\t\t' + searchDC)
    print ()
    out = []
    result = c.search(searchDC, criteria, \
        SEARCH_SCOPE_WHOLE_SUBTREE, attributes = ['department'])  \
        # request a few object from the ldap server
    if result:
        for r in c.response:
            if (r['type'] == 'searchResEntry'):
                out.append(r['dn'])
                out.append(r['attributes']) # comes out in tuple form
            else:
                pass
    else:
        print('result', conn.result)
    return out

这对于提取该部门成员的CN很有效,但对于提取附加的任何附加信息(在本例中是department)。在

示例输出为:

搜索条件设置为:(&;(objectClass=User)(department=2417*) 搜索位置:dc=ple,dc=com

['CN=First Last,OU=ex,OU=am,DC=ple,DC=com', {'department': ['1234']}, 'CN=Another Person,OU=ex,OU=am,DC=ple,DC=com', {'department': ['1234']}]

如何将元组的第二部分,即“1234”作为字符串来提取?这里的最后一步是将数据格式化为:

[First Last, 1234, Another Person, 1234]

。。。所以我可以在另一个函数中使用它来比较部门,如果不满足条件则返回名称。在


Tags: 字符串com信息ouresultdccnout
2条回答

如果输出为:

['CN=First Last,OU=ex,OU=am,DC=ple,DC=com', {'department': ['1234']}, 'CN=Another Person,OU=ex,OU=am,DC=ple,DC=com', {'department': ['1234']}]

然后可以将其设置为newresult,然后执行以下操作:

^{pr2}$

这假设列表中包含部门的元素始终位于位置1,字典中始终有1个值,并且您需要的部门编号是列表中的唯一项。在

IMHO,使用c.search_s而不是{}会更简单,除非您有充分的理由这样做(或者您应该展示您是如何创建响应的)。在

从python ldap文档: search_s直接返回一个2元组的列表(dn,attrs),其中dn是一个包含条目的dn(可分辨名称)的字符串,attrs是一个包含与条目相关联的属性的字典。attr的键是字符串,相关的值是字符串列表

所以对于每个元组entry你有:

dn = entry[0]
departement = entry[1]{'department'}[0]

相关问题 更多 >