python数据清洗 —— re.split()划分字符串

news2024/12/23 9:51:10

需求

对于一行字符串:

route-views6.routeviews.org                 141694                   2a0c:b641:24f:fffe::7    184891 | CN | apnic   | OTAKUJAPAN-AS Otaku Limited, CN

要将其划分成如下7个部分,

['route-views6.routeviews.org', '141694', '2a0c:b641:24f:fffe::7', '184891', 'CN', 'apnic', 'OTAKUJAPAN-AS Otaku Limited, CN']

分别表示含义:

route-views6.routeviews.org (收集器名称)
141694 (AS编号)
2a0c:b641:24f:fffe::7 (对等地址)
CN (国家)
apnic (区域)
OTAKUJAPAN-AS Otaku Limited, CN (AS名称)

分析

尝试1:直接使用str.split()进行划分。

得到

['route-views6.routeviews.org', '141694', '2a0c:b641:24f:fffe::7', '184891', '|', 'CN', '|', 'apnic', '|', 'OTAKUJAPAN-AS', 'Otaku', 'Limited,', 'CN']

可以看到,str.split()可以划分以空格进行分隔的多个元素,但也会导致两个问题

  1. 字符串中有分隔竖线 “|” ,没能过滤掉
  2. 对于 OTAKUJAPAN-AS Otaku Limited, CN (AS名称),其应该是一个整体,而不能被拆分开来

尝试2:使用re.split()

re.split()可以匹配多种形式的字符串,而对于该问题中分隔使用多样的情况,比较适用。因此,可以先统计一下,对于该字符串而言,有几种分隔形式。针对每类分隔形式写一个正则表达式来匹配,从而实现正确划分。

分隔情况1:两个以上空格

对于前四个元素而言,他们是用两个及两个以上的空格来划分,使用两个空格及以上,也能够防止AS名称被误拆分成不同的单词。
在这里插入图片描述对应的正则表达式为\s{2}\s+,表示匹配至少两个连续的空白字符。

分隔情况2:一个竖线和空格

对于对等地址、国家、区域,他们是用一个空格和一个竖线来划分。
在这里插入图片描述对应的正则表达式为\|\s,表示匹配一个竖线 “|” 后跟着一个空白字符。

分隔情况2:两个空格和一个竖线

对于AS名称之前的划分,使用两个空格和一个竖线来划分。
在这里插入图片描述对应的正则表达式为\s{2}\|,表示匹配两个连续的空白字符后跟着一个竖线 “|”。

结果

matches = re.split(r"\s{2}\s+ | \s{2}\| | \|\s", line)

其中,line表示原字符串,划分后结果如下:

this line is:  route-views6.routeviews.org                 141694                   2a0c:b641:24f:fffe::7    184891 | CN | apnic   | OTAKUJAPAN-AS Otaku Limited, CN

['route-views6.routeviews.org', '141694', '2a0c:b641:24f:fffe::7', '184891', 'CN', 'apnic', 'OTAKUJAPAN-AS Otaku Limited, CN']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/676361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++篇】OOP下部分:友元、运算符重载与多态

友情链接:C/C系列系统学习目录 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的…

精选MyBatis面试题

什么是MyBatis? MyBatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,加载驱动、创建连接、创建statement等繁杂的过程,开发者开发时只需要关注如何编写SQL语句,可以严格控制sql执行性能&a…

Python高级语法--迭代器和生成器的区别

迭代器 在 Python 中,迭代器(iterator)是访问集合元素的一种方式,它可以遍历一个序列中的元素,而无需事先确定序列的大小(即无需全部载入到内存中),且支持惰性求值。使用迭代器可以…

程序员 35 岁以后就真的要返乡种田了么?如果家里没田怎么办?

前言 在科技互联网高速发展的当下,程序员这个职业无疑是备受关注的。然而,这个行业似乎总是被一种说法所笼罩:程序员年龄一旦超过35岁,就会面临职业生涯的下坡路,甚至需要考虑“返乡种田”。这种说法是否真实呢&#x…

【Software Testing】【期末习题库】【2023年春】【仅供参考】

文章目录 ①单选②多选③填空④判断⑤大题 类型总分占比平时成绩40%考试/考查60% 题型题量分值备注单选201’多选103’全对3’,错1个0’,少选-1’填空102’判断52’大题210’ 平时习题(3次): ①软件测试概述 ②黑盒测…

【五子棋实战】第5章 开发五子棋前端页面

【五子棋实战】第5章 开发五子棋前端页面 页面设计原则 开发页面 ## 基础HTML骨架 ## 添加页面响应式功能 编写JS ## 获取画布对象与DOM对象 ## 定义棋子、棋盘对象 ## 定义绘画对象(重要!!) ## 初始化绘制棋盘 ## 添加点…

Network 之十三 NC-SI 原理、拓扑结构、RBT 接口及仲裁、协议格式

最近,正在学习 NC-SI 的使用方法,于是开始各种 Google 查找 NC-SI 的资料进行学习。最详细还是得直接看 NC-SI 规范文档 DSP0222,以下就是记录的一些感觉 NC-SI 规范中比较重要的点以及我的一些理解,以备后续查阅。 有任何疑问&am…

OpenGL之模板测试

文章目录 模板测试模板函数物体轮廓源代码 模板测试 当片段着色器处理完一个片段之后,模板测试(Stencil Test)会开始执行,和深度测试一样,它也可能会丢弃片段。接下来,被保留的片段会进入深度测试,它可能会丢弃更多的片…

Git下:Git命令使用-详细解读

目录 一、Git 安装 二、Git 配置 三、Git 工作流程 四、Git 工作区、暂存区和版本库 五、常用 Git 命令清单 1. 创建仓库 2. 增加/删除文件 3. 代码提交 4. 分支管理 5. 标签 6. 查看历史提交 7. 远程仓库同步 8. 撤销操作 六、Git 常用命令速查表 七、Git 电子…

时序预测的深度学习算法全面盘点

1.概述 深度学习方法是一种利用神经网络模型进行高级模式识别和自动特征提取的机器学习方法,近年来在时序预测领域取得了很好的成果。常用的深度学习模型包括循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元&…

第五十一章 协助调查

眼前一个红彤彤的东西缓缓升起。 旭日东升?可现在才升未免太晚了些,升起的速度也未免太快了些,这红日么,也未免太小了些,而且,刚升起的朝阳,也未免显得太红太亮了些。 “是谁呀,水烧…

C语言数据存储 —— 浮点型篇

C语言数据存储 —— 浮点型篇 前言1. 一个常见问题2. 浮点数存储规则2.1 有效数字M一些特别的规定2.2 有效数字E一些特别的规定2.2.1 E如何存入内存2.2.2 E如何从内存中取出 3. 前面问题的解释。4. 结尾 前言 浮点数在内存中的存储方式对程序员来说非常重要。理解浮点数的存储…

数据结构:二叉树经典例题(单选题)-->你真的掌握二叉树了吗?(第一弹)

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关二叉树的经典例题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

消防通道堵塞识别 opencv

消防通道堵塞识别系统通过opencvpython网络模型技术,消防通道堵塞识别对消防通道的状态进行实时监测,检测到消防通道被堵塞时,将自动发出警报提示相关人员及时采取措施。OpenCV的全称是Open Source Computer Vision Library,是一个…

linux-centOS7.9通过docker安装cwmp server:drumsergio/genieacs

一、安装环境 #查看centOS版本 [rootMiWiFi-R4CM-srv network-scripts]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) #自动查找最新安装包并升级 [rootMiWiFi-R4CM-srv ~]# sudo yum upgrade 二、关闭firewalld、NetworkManager、selinux 关闭防火墙、…

【黑马头条-Java微服务项目】

黑马头条-Java微服务项目 (一)、项目介绍1.项目背景介绍(1).基本介绍(2).业务说明(3).项目术语介绍 2.技术栈说明(1).技术栈-基础六层技术(2).技术栈-服务四层技术(3).技术栈-分布 (二)、nacos环境搭建 (一)、项目介绍 1.项目背景介绍 (1).基本介绍 随着智能手机的普及&…

在线选课的微信小程序(微信前端+网站后端)

目录 一、前言 二、微信小程序端(老师、学生) 1.学生用户前端小程序界面 2.老师前端小程序界面 三、后端(管理员、老师、学生) 3.老师后端 4.管理员后端 四、代码获取与调试 一、前言 这是一个在线选课的微信小程序&#…

PID控制算法: 3、Tuning Changes(参数调整)

改变控制参数积分项对输出结果的影响 可靠的控制系统应该有能力实时变更系统的参数 The Beginner’s PID acts a little crazy if you try to change the tunings while it’s running. Let’s see why. Here is the state of the beginner’s PID before and after the param…

STM32F4 点亮灯泡【顺序点亮、按键点亮】

一、顺序点亮灯泡 ①初始化 在user.c文件中,我们需要对LED进行初始化设置。 在函数LED_GPIO_Config中,可以修改代码如下: /*********************************************************************** LED初始化 备注 LED 接在GPC14引脚上…

【Springboot集成Neo4j完整版教程】

🚀 Neo4j 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,C…