广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用Python处理文本,整理信息
  • 805
分享到

使用Python处理文本,整理信息

文本信息Python 2023-01-31 08:01:47 805人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

任务目标 通过python将上述的命令输出从一整个文件中取出来,并转换成表格。否则,我需要分别打开每一个文件,找到对应的输出,拷贝到Ecxel,再进行数据分列动作,操作繁琐而且重复性很大,因此考虑用Python尝试自动化完成此项工作。

任务目标

通过python将上述的命令输出从一整个文件中取出来,并转换成表格。否则,我需要分别打开每一个文件,找到对应的输出,拷贝到Ecxel,再进行数据分列动作,操作繁琐而且重复性很大,因此考虑用Python尝试自动化完成此项工作。

show ip int brief 输出内容示例

RP/0/RSP0/CPU0:a9k-1-new#sh ip int brief
Wed Jul 26 16:19:04.551 PRC

Interface                      IP-Address      Status          Protocol Vrf-Name
Loopback0                      106.53.15.80   Up              Up       default 
Loopback10                     10.53.135.87    Up              Up       vpn-1   
MgmtEth0/RSP0/CPU0/0           unassigned      Shutdown        Down     default 
MgmtEth0/RSP0/CPU0/1           unassigned      Shutdown        Down     default 
MgmtEth0/RSP1/CPU0/0           unassigned      Shutdown        Down     default 
MgmtEth0/RSP1/CPU0/1           unassigned      Shutdown        Down     default 
GigabitEthernet0/0/0/0         106.53.3.26    Down            Down     default 
GigabitEthernet0/0/0/1         unassigned      Shutdown        Down     default 
GigabitEthernet0/0/0/2         106.53.3.230   Shutdown        Down     default 
RP/0/RSP0/CPU0:a9k-1-new#

a9k-1-new的配置文件存在a9k-1-new.log文件中。

Python代码及注释

# 引入re模块
import re
import csv
# 使用一个变量,方便进行批量处理
config_file = 'a9k-1-new.log'
# 将配置文件整个读入,形成一个大的data_buffer
with open(config_file) as file_obj:
data_buff = file_obj.read()

# 查找的关键,使用一个正则表达式,这个正则表达式经过反复尝试出来的。
mixRegex = re.compile(r'^Interface\s+IP-Address\s+Status.*\n'
                          r'(^[A-Z]\w+\d+.*\n)+'
                          r'^RP.*#'
                          ,re.MULTILINE)

# “r” 是为了告诉编译器这个string是个raw string,不要转意backslash '\'。
# 第一行匹配show ip int brief 输出的首行(表头)
# “^Interface”匹配以Interface开头
# “\s+”表示后面跟着一个或多个空白
# 后续继续匹配IP-Address和Status,就可以匹配到首行了
# “.*”表示后面任意字符重复零次或任意次
# “\n”表示最后的换行符
# 第二行匹配接口的信息项,因为信息类别比较多,如果要考虑周全,需要复杂的正则表达式,此处是一个较简单的写法
# 用“()”括号括起来,表示一组,后面的“+”表示对整组进行重复;
# “^[A-Z]\w+\d+.*\n”表示以大写字母开头,后面跟着数字,接口名称都是大写字母开头,后面跟着数字,基本可以匹配接口的输出了;
# 第三行匹配结束信息,如果有条件,可以构造一个特殊的结束行;
# 此处匹配RP开头,以#结尾。

# 调用search()方法,完成搜索
mix_match = mixRegex.search(data_buff)

# 搜索完成后,返回的值是一个大的字符串。
print(mix_match.group())

# 按照换行符,将字符串进行分割,分割为一个列表;
split_lines = mix_match.split('\n')

# 将分割完成的列表做进一步处理,形成一个二维列表。
intf_status_list = []
# sub_list = re.split(r’\s{2,}’, line) 表示分割间隔要求在两个字符以上,否则,像admin shutdown也会被分开。
for line in split_lines:
    sub_list = []
    # sub_list = line.split()
    sub_list = re.split(r'\s{2,}', line)
    intf_status_list.append(sub_list)

# 用pop()函数删除列表的最后一个单元,结束行。
intf_status_list.pop()

# 以下代码将上述生成的二维列表写入到CSV文件中。
csv_output = config_file + '-int_status.csv'

with open(csv_output,'w') as file_obj:
    wr = csv.writer(file_obj)
        for list in intf_status_list:
            wr.writerow(list)

生成的csv文件,可以用excel直接打开,如下:
图片上传失败,以下是CVS cat的输出:

Interface,IP-Address,Status,Protocol Vrf-Name
Loopback0,106.53.15.80,Up,Up,default 
Loopback10,10.53.135.87,Up,Up,vpn-1,
MgmtEth0/RSP0/CPU0/0,unassigned,admin Shutdown,Down,default 
MgmtEth0/RSP0/CPU0/1,unassigned,Shutdown,Down,default 
MgmtEth0/RSP1/CPU0/0,unassigned,Shutdown,Down,default 
MgmtEth0/RSP1/CPU0/1,unassigned,Shutdown,Down,default 

如果程序其他地方需要使用该数据,也可以对列表进行遍历访问。

对文件进行批处理

有两个办法:
一、通过Shell脚本,批量处理。
在代码中做如下修改:

# 引入sys模块,通过命令行传入文件名。
import sys

config_file = sys.argv[1]
# config_file = ‘a9k-1-new.log’

在目录下运行ls 命令,将所有需要处理的文件列出,然后编辑shell 脚本如下,保存为

batch_process.sh
python3 config_process.py a9k-1-new.log
python3 config_process.py a9k-2-new.log
python3 config_process.py a9k-3-new.log
python3 config_process.py a9k-4-new.log
chmod +x batch_process.sh

然后运行./batch_process.sh
几秒钟时间,转换就完成了。

二、将程序本身修改为批处理类型

#引入os模块,列出整个目录,仅处理包含“a9k”的文件
import os

files = os.listdir('.')
for filename in files:
    if 'a9k' in filename:
        config_file = filename

下一篇文章处理show inventory输出。

--结束END--

本文标题: 使用Python处理文本,整理信息

本文链接: https://www.lsjlt.com/news/193338.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Python处理文本,整理信息
    任务目标 通过Python将上述的命令输出从一整个文件中取出来,并转换成表格。否则,我需要分别打开每一个文件,找到对应的输出,拷贝到Ecxel,再进行数据分列动作,操作繁琐而且重复性很大,因此考虑用Python尝试自动化完成此项工作。 ...
    99+
    2023-01-31
    文本 信息 Python
  • 利用python处理网页信息
        在前几周的grep/sed/awk实战中提到,“和CoreSite - Any2 California接入商建立网络BGP邻居关系。从peeringdb上找到了所有接入商的信息,但是转移信息到本地不是很方便,需要进行多次文本调整,耗...
    99+
    2023-01-31
    网页 信息 python
  • 怎么使用Python处理文本数据
    本篇内容介绍了“怎么使用Python处理文本数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用python处理文本数据实验目的熟悉pyth...
    99+
    2023-07-02
  • assign之python文本处理
    需求: code: import os import time import numpy as np def to_log_txt(filename): if not os.path.exists('Out_file'):...
    99+
    2023-01-31
    文本 assign python
  • Python如何处理中国地区信息
    本篇文章为大家展示了Python如何处理中国地区信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1数据的爬取代码:import pandas as pddata=...
    99+
    2023-06-22
  • python中怎么处理文本
    这篇文章给大家介绍python中怎么处理文本,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python处理文本使用方法我们的目的是把记录中包含January的名字列出来,符合“名字 -- 描述”格式的行为有效行。编写p...
    99+
    2023-06-17
  • Python数据分析与处理(二)——处理中国地区信息
    目录2.1数据的爬取2.2检查重复数据2.3检查缺失值2.4 检查异常值2.1数据的爬取 代码: import pandas as pd data=pd.read_csv("ex...
    99+
    2022-11-12
  • 使用微信API给微信用户发文本消息
    这个系列的第二篇教程,介绍的实际是被动方式给微信用户发文本消息,即微信用户关注您的公众号时,微信平台将这个关注事件通过一个HTTP post发送到您的微信消息服务器上。您对这个post请求做了应答(格式为文本),则该应答会通过微信平台投递到...
    99+
    2023-08-31
    API php Powered by 金山文档
  • python cvs文件处理脚本 pyt
        最近有一个需求,需要讲csv文件通过http接口post方法导入到数据库,于是写了一个脚本,主要字符编码这一块踩了不少坑,最后终于完成了,可适用windows 和linux 。    具体功能,cvs列没有顺序要求。直接贴下脚本!#...
    99+
    2023-01-31
    脚本 文件 python
  • WARNING:Ignoring invalid distribution -pencv-python警告信息如何处理
    这篇文章主要介绍“WARNING:Ignoring invalid distribution -pencv-python警告信息如何处理”,在日常操作中,相信很多人在WARNING:Ignoring ...
    99+
    2023-07-05
  • python文件处理笔记之文本文件
    目录1. 建立文件1.1 文本文件代码实现1.2 代码编写分析2. 基本的读写文件2.1 用文件对象write(s)方法写内容2.2 用文件对象read()方法读取内容2.3 连续用...
    99+
    2022-11-12
  • PHP 微信支付V3版本SDK使用整理汇总
    最近项目中需要使用微信支付,决定使用微信官方V3 SDK版本接口 项目支持的环境如下: Guzzle 7.0,PHP >= 7.2.5Guzzle 6.5,PHP >= 7.1.2 安装 compos...
    99+
    2023-10-20
    php 微信 开发语言
  • Python 获取磁盘信息的脚本及常用文
    文件是否存在 os.path.exists(save_to_path+ '/0.png'): 删除 os.remove(save_to_path + '/0.png') 当前运行的脚本位置 run_path = os.path.s...
    99+
    2023-01-31
    磁盘 脚本 常用
  • Windows下查看电脑信息的常用命令整理
    Windows下查看电脑信息的命令 查看当前ip: cmd----->ipconfig/all 查看电脑配置 ---->dxdiag 查看注册表信息 ---->regedit 查看系统属性 ----&g...
    99+
    2023-06-03
    Windows 查看电脑信息 电脑 信息 常用命令
  • 零基础学习Python文本处理
    源 | 小象     文 | 贾庸本文将带领小伙伴们一起,使用Python进行文本处理,先来看下要处理的文本, 文件名为“data.txt”, 文件里面的内容是三行中英对照的文本,和两个空行,我们要实现的功能就是从这三行文本中分别抽取出中文...
    99+
    2023-01-31
    文本 基础 Python
  • python中如何处理文本字符
    这篇文章给大家分享的是有关python中如何处理文本字符的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。完整代码:strings = "我,是‘C|S;D|N!的:程【序】员#M,r&...
    99+
    2023-06-14
  • 使用Shell脚本怎么逐行处理文本文件
    使用Shell脚本怎么逐行处理文本文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。通过read命令完成.read 命令从标准输入中读取一行,并把输入行的每个字...
    99+
    2023-06-14
  • 基于python+mysql超市信息管理系统(附完整源代码)
    (参考的是这篇文章(5条消息) 数据库课程设计—超市零售信息管理系统(Python实现)_小桃在改bug的博客-CSDN博客_超市管理系统数据库设计但是这篇文章里没有完整的代码,所以我自己补全了ui界面和相关的代码,并进行了二创,框架也有改...
    99+
    2023-09-28
    数据库 课程设计 mysql python
  • 如何使用python处理文件
    今天就跟大家聊聊有关如何使用python处理文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎...
    99+
    2023-06-14
  • Linux文本处理工具使用详解
    1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来 grep是一个文本工具,是通过一行一行来匹配文本进行处理的; 通过grep命令,借助-v参数显示不...
    99+
    2022-06-03
    Linux 文本处理工具
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作