如何在re.findall()响应中将ip地址数组转换为string

时间:2016-04-02 16:28:35

标签: python-2.7

我有这段代码,并希望最终将re.findall()响应中的IP地址转换为字符串。但我总是收到错误(见下文)。

url = 'http://checkip.dyndns.org'
request = urllib.urlopen(url).read()
ip = str(re.findall(r'[0-9]+(?:\.[0-9]+){3}', request))
print ip

我总是收到此错误

TypeError: not all arguments converted during string formatting

有人能告诉我转换它的最佳方法是什么? 谢谢。

1 个答案:

答案 0 :(得分:1)

我想您的问题是,您正在将re.findall()转换为字符串,但该函数会返回注释中提到的列表。所以最好的方法是使用re.findall(...)[0]如果你只想要一个结果/一个ip,如果没有,那么打印所有结果:

ips = re.findall(r'[0-9]+(?:\.[0-9]+){3}', request)
for ip in ips:
    print str(ip)

就个人而言,我认为最好是打印所有内容,或者至少检查re.findall()的长度,因为你很容易错过这种方式。另外,我建议您this站点进行正则表达式调试。 :)

enter image description here