2016-12-25 43 views
2

私はこの件に関して私が見つけることができるすべての投稿を見てきましたが、何も私の問題に答えていませんでした。Python上の文字列から整数値を抽出する

これはコードです:あなたは、私はそれがドットであるとしてIPを抽出しようとして見ることができるように(このコードでは、私がしようとdidntの
>>>f ['1','9','2','1','6','8','4','3','1','1','1','0','0','0']


output = 'Scan results for BrainS (192.168.43.111) Scan results for Slave (192.168.43.107) Scan results for SlaveSmall (192.168.43.242)' while (True) if output[i].isdigit(): # i has initial value of 15, j=0 f[j]=output[i] j+=1 i+=1 elsif(i == len(output)): break else: i+=1 continue

を印刷私はそれがあるように私は正確にしたい文字列を取得します方法を見つけ出すカントドットだけの数字)、 抽出します Fを= 192.168.43.111

提案がありますか?より良いコマンド?私はそれがそうのような正規表現を使用するのが最善だと思う文字列の中括弧の複数のペアのために

+2

正規表現が答えです:http://stackoverflow.com/questions/10086572/ip-address-validation-in-python-using-regex – zemekeneng

答えて

0

import re 

output = '''Scan results for BrainS (192.168.43.111) 
      Scan results for Slave (192.168.43.107) 
      Scan results for SlaveSmall (192.168.43.242)''' 

f = re.findall(r'\(([^()]+)\)',output) 
>>>['192.168.43.111', '192.168.43.107', '192.168.43.242'] 

は、あなたが行くここhere!

+0

すごい感謝多くは、魔法のように動作し、どのようにそこにいる場合についてこのような数行はありましたか?異なったIPですそれから私はいくつかの "("& ")"を持っていますが、そこに解決策がありますか? – eyal360

+0

質問を編集してこれらの他の行を表示してください。上記のコードは、文字列に括弧が1つしかない場合にのみ機能します。 – shash678

+0

私はちょうどそれを編集しました、私は実際の出力を追加しました、私は前にそれを簡素化しようとしました。これが私の質問をよりよく理解するのに役立つことを願っています。 – eyal360

0

それを試してみて、このコードは、仕事をします!

output = 'My computer IP is = (192.168.43.111) and yours not.' 
ip=[] 
ip_flag = False 

for x in output: 
    if x == '(': 
     ip_flag = True 
     continue 
    if ip_flag: 
     if x != ')': 
      if x != '.': # remove this line of you want the dots 
       ip.append(x) 
     else: 
      break 
print(ip) 
theIp="" 
for i in ip: 
    theIp+=i 
+1

この回答は、私が望んでいなかった['1'、 '9'、 '2'、...]最初の場所ですが、それは良い作品です。 – eyal360

+1

@ eyal360もしドットがこの行を削除したいのであれば、 'x!= '。': ':' 文字列には最後にループを追加するだけです。 'theIp =" " iはip: theIp + = i' done – Amjad

+1

助けてくれてありがとう! – eyal360

関連する問題