python做算法分析_使用python做文件分析

该代码段展示了一个Python脚本,用于解析包含IP地址、端口和协议信息的文本,如`Host:223.99.141.1()Ports:80/open/tcp//http//HTTPD/`等。脚本通过正则表达式匹配并提取这些信息,然后将结果写入到新的文件中。它首先定义匹配IP的正则模式,接着读取输入文件,查找包含'Ports'的行,从中提取IP、端口和协议,并按指定格式输出。
摘要由CSDN通过智能技术生成

背景:一个小伙伴让我帮忙分析下文件,样例

Host: 223.99.141.1 () Ports: 80/open/tcp//http//HTTPD/, 646/open/tcp//tcpwrapped///, 832/open/tcp//ssl|netconfsoaphttp?///

想要达到的效果

223.99.141.1: 80 open tcp http HTTPD

223.99.141.1: 646 open tcp tcpwrapped

223.99.141.1: 832 open tcp ssl|netconfsoaphttp?

就是把其中的ip地址还有端口和协议提取出来,可以用re模块直接匹配出来的,但是re不太熟练,只能这样搞了。。。上代码

# -*-coding:utf-8 -*-

# BY WANGCC

#filename:parse.py

import re,sys,os

#Host: 223.99.141.24 () Ports: 80/open/tcp//http//nginx/, 443/open/tcp//http//nginx/

file_name=sys.argv[1]

put_name=sys.argv[2]

def w_file(data):

new_f = open(put_name, 'a+')

new_f.write(data+'\n')

new_f.close()

def parser():

pat = re.compile(' (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) ')

lines=[]

with open(file_name,'r') as f:

for line in f.readlines():

if "Ports" in line:

ip = re.findall(pat, line)

str_ip = (" ".join(ip))

new_line = re.split(",|:", line)

new_line.pop(1)

for i in new_line:

if len(i)>6:

port_Agreement=re.split(r'(?:/|//|\s)\s*',i)

str_port_Agreement=(" ".join(port_Agreement))

data = (str_ip+":"+str_port_Agreement)

w_file(data)

def main():

if not os.path.exists(file_name) :

exit('输入文件不存在')

parser()

if os.path.exists(put_name) :

print('执行成功! ---->', put_name)

else:

exit('输出文件不存在,请检查!')

main()

运行样例

python parse.py a.txt b.txt

整体结果比较简单,但是可以实现需求就行了。。哈哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值