Есть строка r, из которой надо достать только ФИО человека с помощью регулярных выражений. Максимум что у меня вышло это получить '=Иванов Иван Иванович,'.
Как можно дополнить выражение, чтобы получить ФИО без лишних знаков?
import re
r = 'CN=Иванов Иван Иванович,OU=0072,OU=007,OU=Users,OU=Departments,DC=contoso,DC=com,DC=ua'
result = re.search(r'=\D+,',r)
print(result)
Ответ
text = 'CN=Иванов Иван Иванович,OU=0072,OU=007,OU=Users,OU=Departments,DC=contoso,DC=com,DC=ua'
import re
result = re.search(r'CN=(.+?),', text)
print(result)
print(result.group(1)) # 'Иванов Иван Иванович'
У того текста очень простой формат, можно сгенерировать словарь:
Поддержка ключей для нескольких значений:
from collections import defaultdict
key_by_values = defaultdict(list)
for x in text.split(','):
k, v = x.split('=')
key_by_values[k].append(v)
print(key_by_values['CN']) # ['Иванов Иван Иванович']
print(key_by_values['OU']) # ['0072', '007', 'Users', 'Departments']
Ключ для одного значения:
# В одну строку:
key_by_value = dict(x.split('=') for x in text.split(','))
# Или более привычно:
key_by_value = dict()
for x in text.split(','):
k, v = x.split('=')
key_by_value[k] = v
print(key_by_value['CN']) # 'Иванов Иван Иванович'
print(key_by_value['OU']) # 'Departments'
Комментариев нет:
Отправить комментарий