繁体   English   中英

Python从字符串中提取子字符串

[英]Python extract substring from string

所以我正在尝试将我编写的bash脚本转换为我正在学习的python,而bash whois的python等效项却无法提供我所需的答案。

这就是我在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中获取结果却给了我很大的麻烦。

我可以从subprocess.call调用bash whois ,但想弄清楚如何在python中做到这一点。 我知道我可以使用re.configure来抓取一部分,但返回值再次更改,因此re.compile也必须每次都更改。

我要继续尝试还是坚持使用效果很好的bash脚本? 我已经写了大多数python脚本,我必须查找的内容正在帮助我学习。

有任何想法吗?

你可以在这里看到bash脚本

谢谢,em

使用正则表达式模块可以使您走上正确的道路。 您的搜索可能是

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

我最终要做的是

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 ,因为某些电子邮件地址中带有连字符。 我在看的是正则表达式而不是完整的库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM