5

IPの出力をセットIPと照合して結果をレンダリングできない理由を理解しようとしています。

import urllib
import re

ip = '212.125.222.196'

url = "http://checkip.dyndns.org"

print url

request = urllib.urlopen(url).read()

theIP = re.findall(r"\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}", request)

print "your IP Address is: ",  theIP

if theIP == '211.125.122.192':
    print "You are OK"
else:
    print "BAAD"

結果は常に「BAAD」

4

4 に答える 4

0

theIP は文字列ではなく、リストです。ドキュメントを見る

>>> print re.findall.__doc__
Return a list of all non-overlapping matches in the string.

    If one or more groups are present in the pattern, return a
    list of groups; this will be a list of tuples if the pattern
    has more than one group.

    Empty matches are included in the result.

あなたは次のようなことをしたいかもしれません

for ip in theIP:
    if ip == '211.125.122.192':
        print 'You are ok :)'

ただし、Web ページにアクセスして結果を解析するよりも、IP を取得するためのはるかに優れた方法がおそらくあります。多分あなたは使用hostname -Iしてサブプロセスできますか?たぶん、このようなものがうまくいくでしょうか?

import subprocess

theIP = subprocess.check_output(['hostname','-I'])
于 2013-11-06T15:47:22.230 に答える