小龟初学者 发表于 2021-1-26 22:49:14

求大神帮忙写一段代码(注释尽量写详细点,有偿)

【难度有一些请同学们做好准备】假如现有一组爬虫爬取的数据,每个元素包含了一个IP地址域端口号,[("192.168.1.109",6000),("192.168.1.109",None),("192.168.2.255",8000),("192.168.100.200",8080),("192.168.1.8600",6000),("192.168.1.199",8000),("192.168.1.500",6000),("192.168.1.50",80000),("192.168.1.50",'80000')],里面的部分数据有错误,

请去去除错误数据,保留正确的数据!编写代码中请使用列表推导式

提示:

    1. ip地址192.168.1.205 由点号分割的4个整数范围是0~255,端口是大于1~65535的数字

   2. 可以借助函数方法、灵活使用列表推导式、字符串操作、逻辑运算 等

要求: 请同学们,列表推导式以外不要使用循环

°蓝鲤歌蓝 发表于 2021-1-27 00:06:32

“端口是大于1~65535的数字” ?


import re

all_ip_address = [
    ("192.168.1.109", 6000),
    ("192.168.1.109", None),
    ("192.168.2.255", 8000),
    ("192.168.100.200", 8080),
    ("192.168.1.8600", 6000),
    ("192.168.1.199", 8000),
    ("192.168.1.500", 6000),
    ("192.168.1.50", 80000),
    ("192.168.1.50", "80000"),
    ("1.168.1.50", "8000"),
]

ip_rule = r"^((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)$"

for address in all_ip_address:
    ip, port = address
    ip_result = re.search(ip_rule, ip)
    if ip_result and isinstance(port, int) and 1 <= port <= 65535:
      print(address)

小龟初学者 发表于 2021-2-25 15:28:40

°蓝鲤歌蓝 发表于 2021-1-27 00:06
“端口是大于1~65535的数字” ?

谢谢 不好意思啊现在才看到

小龟初学者 发表于 2021-2-25 15:29:13

°蓝鲤歌蓝 发表于 2021-1-27 00:06
“端口是大于1~65535的数字” ?

我这边在当天就完成了
页: [1]
查看完整版本: 求大神帮忙写一段代码(注释尽量写详细点,有偿)