2016-07-11 3 views
0

, поэтому я пытаюсь преобразовать скрипт bash, который я написал, в python, который я изучаю, и эквивалент python для bash whois просто не может дать мне ответ, что i необходимость.Python extract substring из строки

это то, что я имею в bash-

whois 'ip address' | grep -i abuse | \ 
    grep -o [[:alnum:]]*\@[[:alnum:]]*\.[[:alpha:]]* | sort -u 

и она прекрасно работает.

при попытке сделать что-то подобное в Python (3.5.2) -

IPWhois('ip address').lookup_whois() 

это дает мне словарь с объектом, который я искал в первом значении примерно на полпути через строку.

Я попытался поместить его в str(dict).splice('\n')[index], но с каждой итерацией индекс меняется, поэтому я не могу поместить его в такой скрипт. также bash whois может выполнять как IP-адреса, так и имена доменов без необходимости конвертировать. Я думаю, что я вычислил конверсию, но, пытаясь получить результаты от IPWhois, я испытываю боль в заднице.

Я мог бы назвать bash whois от subprocess.call, но хотел бы выяснить, как это сделать в python. Я знаю, что я могу захватить его часть с помощью re.configure, но опять же изменения возвращаются, поэтому re.compile также придется менять каждый раз.

Я продолжаю пытаться или просто придерживаться сценария bash, который работает так хорошо? Я уже написал большую часть скрипта python, и вещи, которые мне нужно найти, помогают мне учиться.

любые идеи?

вы можете увидеть Баш скрипт here

спасибо, эм

ответ

0

Вы были на правильном пути, с помощью модуля регулярных выражений. Ваш search может быть

re.search(r'(\w*@\w*\.\w*)', IPWhois(ip).lookup_whois()['nets'][0]['emails']).group(1) 
0

То, что я в конечном итоге делает был

domain = socket.gethostbyname(hostname/ipaddr) #if ipaddr it stays the same 
email_addr = re.search(r'(\w*\D\w*@\w*\.\w*)', IPWhois(domain).lookup_whois()['nets'][0]['emails']).group(1) 

мне пришлось поставить дополнительный \w*\D там, потому что некоторые из адресов электронной почты были дефис в них. Я смотрел на regex-howto вместо полной библиотеки.

Смежные вопросы