Извлечение поддоменов из строк с использованием split in python - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть функция python, которая выводит / печатает следующее:

['CN=*.something1.net', 'CN=*.something2.net', 'CN=*.something4.net', 'CN=something6.net', 'CN=something8.net', 'CN=intranet.something89.net', 'CN=intranet.something111.net, 'OU=PositiveSSL Multi-Domain, CN=something99.net', 'OU=Domain Control Validated, CN=intranet.something66.net',...etc] 

Я пытаюсь извлечь все имена поддоменов между "CN =" и одиночной кавычкой, используя метод split () в python. Я пробовал split('CN=', 1)[0], но я не могу понять, как его использовать

что я хочу распечатать:

['something1.net', 'something2.net', 'something4.net', 'intranet.something111.net', 'intranet.something66.net']

Любая помощь будет с благодарностью оценена: -)

Спасибо, MJ

Ответы [ 3 ]

1 голос
/ 27 апреля 2020

Последняя одинарная кавычка указывает на конец строки, поэтому кажется, что вы просто хотите все после CN=. Предполагая, что это так, вы можете просто отрубить первые три символа:

subdomains = [item[3:] for item in my_list if item.startswith('CN=')]
0 голосов
/ 27 апреля 2020

Если вы просто хотите вырезать CN= из каждой строки, вы можете вырезать слева с помощью str.lstrip():

subdomains = [item.lstrip("CN=") for item in my_list]
0 голосов
/ 27 апреля 2020

Вот более читаемый код, который извлекает субдомены более чистым или лучшим способом; Код @tzaman на самом деле не дал мне поддоменов.

myDirtyDomains = ['CN=*.something1.net', 'CN=*.something2.net', 'CN=*.something4.net',\
'CN=something6.net', 'CN=something8.net', 'CN=intranet.something89.net',\
 'CN=intranet.something111.net', 'OU=PositiveSSL Multi-Domain', \
 'CN=something99.net', 'OU=Domain Control Validated', 'CN=intranet.something66.net']

cleanSubDomainsList = []

for item in myDirtyDomains:
    countDots = item.count(".")
    if countDots == 2:
        host = item.partition('CN=')[2]
        subdomain = host.partition('.')[0]
        cleanSubDomainsList.append(subdomain)

print(cleanSubDomainsList)
...