首页 > 编程语言 >python 使用多个界定符分割字符串

python 使用多个界定符分割字符串

时间:2024-01-07 20:32:25浏览次数:36  
标签:afed python fjdk re split 字符串 foo 界定 asdf

问题

你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的。

解决方案

string 对象的 split() 方法只适应于非常简单的字符串分割情形,它并不允许有 多个分隔符或者是分隔符周围不确定的空格。当你需要更加灵活的切割字符串的时候, 最好使用 re.split() 方法:

>>> line = 'asdf fjdk; afed, fjek,asdf, foo' >>> import re
>>> re.split(r'[;,\s]\s*', line)
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

函数 re.split() 是非常实用的,因为它允许你为分隔符指定多个正则模式。比如, 在上面的例子中,分隔符可以是逗号,分号或者是空格,并且后面紧跟着任意个的空 格。只要这个模式被找到,那么匹配的分隔符两边的实体都会被当成是结果中的元素返 回。返回结果为一个字段列表,这个跟 str.split() 返回值类型是一样的。

当你使用 re.split() 函数时候,需要特别注意的是正则表达式中是否包含一个括 号捕获分组。如果使用了捕获分组,那么被匹配的文本也将出现在结果列表中。比如, 观察一下这段代码运行后的结果:

>>> fields = re.split(r'(;|,|\s)\s*', line)
>>> fields
['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo'] >>>

获取分割字符在某些情况下也是有用的。比如,你可能想保留分割字符串,用来在 后面重新构造一个新的输出字符串:

>>> values = fields[::2]
>>> delimiters = fields[1::2] + ['']
>>> values
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo'] >>> delimiters
[' ', ';', ',', ',', ',', '']
>>> # Reform the line using the same delimiters >>> ''.join(v+d for v,d in zip(values, delimiters)) 'asdf fjdk;afed,fjek,asdf,foo'
>>>

如果你不想保留分割字符串到结果列表中去,但仍然需要使用到括号来分组正则 表达式的话,确保你的分组是非捕获分组,形如 (?:...) 。比如:

>>> re.split(r'(?:,|;|\s)\s*', line)
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo'] >>>

标签:afed,python,fjdk,re,split,字符串,foo,界定,asdf
From: https://blog.51cto.com/u_16251183/9134716

相关文章

  • 美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推
    一、介绍美食管理与推荐系统。本系统使用Python作为主要开发语言开发的一个美食管理推荐网站平台。网站前端界面采用HTML、CSS、BootStrap等技术搭建界面。后端采用Django框架处理用户的逻辑请求,并将用户的相关行为数据保存在数据库中。通过Ajax技术实现前后端的数据通信。创新点......
  • 《基于树莓派和Arduino入门机器人学:使用Python和OpenCV》-第二版
    书籍:BeginningRoboticswithRaspberryPiandArduino:UsingPythonandOpenCV,2nd作者:JeffCicolani出版:Apress本文内容转载自公众号【一点人工一点智能】关注51CTO@一点人工一点智能,了解更多移动机器人&人工智能信息01 书籍介绍学习如何使用树莓派与Arduino结合来构建具有先......
  • # yyds干货盘点 # 盘点一个AI都无法解决的Python基础题目(中篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【大侠】问了一个Pandas实战的问题,一起来看看吧。上一篇文章说到,看上去AI给的答案,似乎让【大侠】不满意,遂来白银交流群问问大佬们。这一篇文章,我们一起来看看【瑜亮老师】给的代码。二、实现过程粉丝的原始数据中,还是有些乱的,比方......
  • 鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法
    一、介绍鱼类识别系统。使用Python作为主要编程语言开发,通过收集常见的30种鱼类('墨鱼','多宝鱼','带鱼','石斑鱼','秋刀鱼','章鱼','红鱼','罗非鱼','胖头鱼','草鱼','银鱼','青鱼','马头鱼'......
  • Python 爬虫,Nendo 网站作品信息采集爬虫源码!
    简单的网站写爬虫就跟流水线加工一样,抄抄改改,没有问题就直接上了,直接了当省事,又是一篇没有营养的水文。一个比较简单的爬虫,适合练手学习使用,主要是爬取和采集网站的作品信息,包括标题、内容及图片,其中图片采用了多线程爬取。考虑到外网爬取,所以采用了三次访问超时重试的机制,同时对于......
  • datetime毫秒python
    实现datetime毫秒Python引言在Python中,datetime模块提供了处理日期和时间的功能。然而,datetime模块默认只提供精确到秒的时间戳,如果需要精确到毫秒的时间戳,我们需要对datetime模块进行一些扩展。本文将指导你如何实现在Python中获取精确到毫秒的时间。流程概述下面是实现dat......
  • conda create创建环境 指定python版本
    使用condacreate创建环境指定python版本在开发Python程序时,我们经常会遇到多个项目使用不同的Python版本的情况。为了解决这个问题,我们可以使用Anaconda提供的conda命令来创建虚拟环境,并在创建环境时指定所需的Python版本。这篇文章将介绍如何使用condacreate命令创建环境并指......
  • class ABC python
    如何实现Python中的类(classABC)作为一名经验丰富的开发者,我很高兴能教给你如何在Python中实现一个类(classABC)。下面是一个简单的步骤表格,将指导你完成这个过程。步骤描述步骤1定义一个类步骤2添加属性和方法步骤3创建类的实例步骤4使用类的属性和方法......
  • 书籍推荐-《机器人编程:使用树莓派3和Python构建和控制自主机器人》
    以下内容来自公众号【一点人工一点智能】编辑:东岸因为@一点人工一点智能书籍:LearnRoboticsProgramming:BuildandcontrolautonomousrobotsusingRaspberryPi3andPython作者:DannyStaple出版:PacktPublishing01书籍介绍我们生活在一个最复杂或重复的任务都是自动化......
  • js和python的接口api怎么开发
    在JavaScript(JS)和Python之间开发接口(API)时,可以使用多种方法,具体取决于你的需求和偏好。以下是一些常见的方法:RESTfulAPI:RESTful(RepresentationalStateTransfer)是一种设计风格,通过HTTP协议进行通信。你可以使用Node.js(JavaScript)和Flask/Django(Python)等框架来实现RESTfulAPI。在......