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

2023-11-12

需求

对于一行字符串:

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']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python数据清洗 —— re.split()划分字符串 的相关文章

  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • 2023-05-30 题目

    一 LinkedList 1 特点 线程不安全 底层是链表 删除 插入数据快 查询速度较慢 如果想让其变成线程安全的 可以使用Collections synchronizedList 方法 链表底层结构 2 源码如下 Pointer to
  • 电磁兼容按GB4824-2019分类,为1组A类和2组A类,是如何区分?

    电磁兼容按GB4824 2019分类 为1组A类和2组A类 是如何区分 摘要 电磁兼容按GB4824 2019分类 为1组A类和2组A类 是如何区分 GB4824 2019分类 设备的分组与分类 分组 为了简化区分相关限值 本标准范围内的设
  • 请求分页系统中的置换算法(FIFO、LRU、Optimal)

    操作系统实验导航 实验一 银行家算法 https blog csdn net weixin 46291251 article details 115384510 实验二 多级队列调度和多级反馈队列调度算法 https blog csdn n
  • Spring Boot 使用WebSocket、SockJS、STOMP实现消息功能(三)

    一 介绍 这里主要基于上一篇介绍一下基于SocketJS Stomp来实现的的长连接 我借鉴了其他的一些博客 只是把我用的知识总结在了一起方便我自己以后回顾 二 WebSocket概念 概述 WebSocket协议提供了通过一个套接字实现全
  • 10年老技术人员:C++ 该如何快速入门?

    C 是一门面对对象的语言 我们如何学习呢 其实任何的难题都是多种简单的部分通过复杂的关系组合在一起 学语言 最关键的是理解而不是运用 高中的时候 老师给出的公式 都是告诉我们用就好了 不用去了解它怎么来的 但是语言不一样 你如果只会用那你是
  • UnityEditor-批处理Texture,spriteEditor,代码设置Pivot失效问题

    需求起因 最近制作角色2D八方向的动画 美术提供的序列帧图片资源 角色不同动作不同方向的图片大小和角色实际的中心点是不一致的 如图所示 攻击和溃败的序列帧图片尺寸和角色在图片中心位置是不一样的 这样会导致一个问题 在动画状态切换的时候 犹豫
  • R-CNN网络基础

    目录 R CNN网络基础 Overfeat模型 RCNN模型 算法流程 候选区域生成 CNN网络提取特征 目标分类 SVM 目标定位 预测过程 算法总结 Fast RCNN模型 算法流程 ROI Pooling 目标分类和回归 模型训练 模
  • java发送邮件报SSL安全异常解决

    用公司阿里云企业邮箱发送邮件 一直报javax net ssl SSLHandshakeException PKIX path building failed sun security provider 异常 顾名思义是安全验证问题 以下是
  • R语言-地图绘制的思路

    R中的画地图的思路有三种 一种是利用包里GIS方面的数据 在R中直接画出来 第二种是从其他地方拿到数据 在R中通过某些包解析后再展现成 第三种就是直接把别人的图拿过来 自己再添加或去掉自己需要或不需要的东西 这三种方法只是数据来源不同 具体
  • BGP实验--联邦以及反射器

    实验明细 实验拓扑 实验要求 实验内容 实验拓扑 实验要求 1 R2 R7每台路由器均存在一个环回接口用于建立邻居 同时还存在一个环回来代表连接用户的接口 最终这些连接用户的接口网络需要可以和R1 8的环回通讯 2 AS2网段地址为172
  • 【C语言】扫雷小游戏的实现(爆炸展开)

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 各位朋友们大家好呀 今天又又是游戏整活环节 先介绍一下这个版本的
  • 【JavaScript】运算符及其优先级

    目录 一 算术运算符 1 常用的算术运算符 2 算术运算符的注意事项 二 递增和递减运算符 1 前置递增 递减 运算符 2 后置递增 递减 运算符 3 前缀和后缀的区别 三 比较运算符 关系运算符 四 逻辑运算符 1 运算中的短路现象 2
  • MATLAB车牌识别技术实现

    目 录 一 课程设计任务11 二 课程设计原理及设计方案22 1 系统简述22 2 图像预处理33 2 1灰度变换33 2 2边缘提取44 3 车牌定位55 4 字符分割55 5 字符识别66 三 课程设计的步骤和结果88 四 设计总结22
  • 关于深度学习中concat和eltwise两种特征融合方式用处的猜想

    在对网络不同地方的特征进行融合时 尤其是在深层网络融合浅层网络的特征的时候我们需要用到这两种融合方式 这两者的使用有有什么区别吗 在实际中 直接使用eltwise将当前的深层特征与浅层的特征融合时效果并不好 应该在eltwise前加若干层网
  • jmeter基本使用

    1 测试工具 jmeter压力测试相关工具 1 apache jmeter 3 1 2 JMeterPlugins Standard 1 4 0 JMeterPlugins Extras 1 4 0 3 ServrerAgent 2 2 1
  • windows azure系统简介

    Windows Azure Storage 云存储系统 提供给用户 貌似无限容量的数据存储 貌似可保存任意长的时间 数据按副本存放 本地副本 容忍设备故障 广域副本 容忍地域灾难 强一致性 待看 Azure存储系统的元素包括三种 Blobs
  • 随机抽奖程序(每天一个python小项目)

    import random num 用于存放抽奖码 print 欢迎来到抽奖小程序 while True usernum input 请输入参与抽奖的人数 reward input 请输入中奖人数 if usernum isdigit Tr
  • Python+Selenium-20-图片验证码处理

    前言 有些注册页面会含有验证码 本篇描述在selenium中对验证码的处理实例 需求 打开万维易源注册页面 https www showapi com auth reg 这个是第三方api平台易源接口 后面验证码识别用的就是他的 在注册页面
  • 【HBZ分享】ES索引分片的写入原理 及 流程

    当一条数据写到ES要经历哪些过程 当插入一条新的数据时 数据会进入Translog 和 MemoryBuffer两个内存中 并添加了事务日志 此时该文档不可查询 当translog大到一定程度时 会发生一个commit操作 也就是全量提交
  • python数据清洗 —— re.split()划分字符串

    需求 对于一行字符串 route views6 routeviews org 141694 2a0c b641 24f fffe 7 184891 CN apnic OTAKUJAPAN AS Otaku Limited CN 要将其划分成