Извините заранее, если этот вопрос уже задан, проделали какой-то поиск, но не повезло.Извлечь строку из кортежа, встроенного в список, Python 3
TL; DR: Попытка вытащить вторую часть кортежа из строя.
Я создаю скрипт с 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 членов в этом отделе, но не для извлечения независимо дополнительной информации, в этом случае отдел, прилагается.
Выход образца: критерии
Поиск устанавливается: (& (объектный = User) (отдел = 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]
... так что я могу использовать его в другую функцию, которая сравнивает отдел и возвращает имя, если условия не будут выполнены.
Это работает и возвращает 1234, как указано выше. Если люди были из разных отделов (скажем, 1234, 2345), есть ли способ применить этот метод для вытащить оба или любое количество отделов? Я надеялся отобразить DN, отдел, DN, отдел и т. Д., Не опуская повторений ... Кроме того, спасибо за быстрый и точный ответ! :) – oBreak
Да, вы бы исключили последний '[0]', чтобы он читал 'print (list (newresult [1] .values ()) [0])', который дает вам список отделов – AtAFork
вопрос неправильный, это будет просто 'print (list (newresult [3] .values ()) [0] [0])' – AtAFork