2016-07-11 20 views
0

だから、私が書いたbashスクリプトをPythonに変換しようとしています。これは私が学んでいる、そしてPythonのbash whoisと同等のものです。必要。Pythonは文字列から部分文字列を抽出する

これは私がbash-

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

を持っているし、それが完璧に動作するものです。

(3.5.2)Pythonで似た何かをしようとしている -

IPWhois('ip address').lookup_whois() 

それは私に私は、文字列による約半分の最初の値で探しているオブジェクトと辞書を与えています。

私はこれをstr(dict).splice('\n')[index]に入れようとしましたが、各繰り返しでインデックスが変わるので、そのようなスクリプトに入れることはできません。また、bash whoisは、変換することなくIPアドレスとドメイン名の両方を行うことができます。 私は変換を計算したと思っていますが、IPWhoisの結果を取得しようとすると、私はバットに痛みを与えています。

私はbash whoissubprocess.callから呼び出すことができますが、これはPythonでどのように行うのかを理解したいと思います。私はre.configureでそれの一部をつかむことができることを知っていますが、再び戻り値が変わるのでre.compileも毎回変更する必要があります。

私は試し続けますか、うまく動作するbashスクリプトに固執しますか? 私はすでにpythonスクリプトのほとんどを書いています。私が調べなければならないものは私が学ぶのを助けています。

あなたはbashスクリプトにhere

おかげで、あなたは正規表現モジュールを使用して正しい軌道に乗っていた EM

答えて

0

を見ることができます。あなたのsearchは私がやってしまった何を

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

私は電子メールアドレスの一部は、それらにハイフンがあったのでそこに余分な\w*\Dを入れていた

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) 

だった可能性があります。私は完全なライブラリの代わりに正規表現の方法を見ていました。

関連する問題