Страницы

Поиск по вопросам

пятница, 7 июня 2019 г.

Извлечь строку с помощью регулярных выражений

Есть строка 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'

Комментариев нет:

Отправить комментарий