• Python 正则表达式匹配IP (能过滤00X等数值显示问题)


     1 #! python3
     2 # coding=utf-8
     3 # @Time    : 2018/6/15 15:03
     4 # @Author  : hsq
     5 # @File    : IPCatcher.py
     6 # @Software: PyCharm
     7 
     8 """
     9 捕获文本中的IP
    10 【输入】带IP混合文本的文件
    11 【输出】捕获出来的IP,去重,每行显示一个
    12 【使用】
    13 输入文件放res_in目录
    14 输出文件放res_out目录
    15 """
    16 
    17 import os
    18 import re
    19 import sys
    20 from PyInstaller.compat import FileNotFoundError, FileExistsError
    21 
    22 # 读取文件
    23 # 错误备忘 :无法识别python当前运行目录
    24 # input_floder_root_path = os.path.abspath('.')+"\res_in\" # 输入文件夹
    25 # output_floder_root_path = os.path.abspath('.')+"\res_out\" # 输出文件夹
    26 output_file = "output_result.txt"
    27 output_str_list = []
    28 
    29 
    30 # 获取当前运行目录
    31 def get_current_path():
    32     paths = sys.path
    33     current_file = os.path.basename(__file__)
    34     for path in paths:
    35         try:
    36             if current_file in os.listdir(path):
    37                 return path
    38         except (FileExistsError,FileNotFoundError) as e:
    39             print(e)
    40 
    41 input_floder_root_path = get_current_path()+"\res_in\"    # 输入文件夹
    42 output_floder_root_path = get_current_path()+"\res_out\"  # 输出文件夹
    43 
    44 print (input_floder_root_path)
    45 
    46 # 读取文件夹 # 定位目标 # 解析目标 # 存储目标
    47 for file in os.listdir(input_floder_root_path):
    48     with open(input_floder_root_path+file,  'r',encoding='utf-8') as f:#错误备忘:读取字节流和re解析错误
    49         for line in f.readlines(10240000): # 关键点:缓存大小为B,每次读取10MB,防止占用内存过大
    50             # 关键点:过滤IP,有效性检查,数值显示检查去除补0
    51             for ip in re.findall(
    52                 # """ 正则表达式
    53                 #     (?<!) 不匹配之前,开始匹配
    54                 #     (?!)  不匹配之后,开始匹配
    55                 #错误备忘:(未过滤01. 001. 000.)
    56                 #  r'(?<![.d])(?:25[0-5].|2[0-4]d.|[01]?dd?.){3}(?:25[0-5]|2[0-4]d|[01]?dd?)(?![.d])',
    57                 # """
    58                  r'(?<![.d])(?:2[0-5][0-5].|1[d][d].|[1-9][d].|[d].){3}(?:2[0-5][0-5]|1[d][d]|[1-9][d]|[d])(?![.d])',
    59                 line):
    60                 output_str_list.append(ip)
    61 
    62 output_str_list = list(set(output_str_list)) # 关键点:去重
    63 for ip in sorted(output_str_list):
    64     print (ip)
    65 print ('list len:',output_str_list.__len__())
    66 print ('list final:',output_str_list)
    67 
    68 # 生成文件
    69 with open(output_floder_root_path+output_file, 'w+') as f:
    70     for line in output_str_list:
    71         f.writelines(line+'
    ')
  • 相关阅读:
    arcgis server adf java
    JBoss4.2.3下载地址
    关心
    [转载]通过Arcgis Server向MXD中添加图层
    arcgis server问题总结
    想和做
    无敌
    [转载]通过Arcgis Server将某一图层从MXD中…
    Error retrieving "feature.xml".
    360很强大
  • 原文地址:https://www.cnblogs.com/hsqzggg/p/9201078.html
Copyright © 2020-2023  润新知