码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python常用操作之使用多个界定符(分隔符)分割字符串


    本系列文章会总结python中各种常见及常用的内置方法、对不同数据结构的操作,参考书籍《python cookbook》第三版

    分割字符串

    • 单个界定符分割字符串
      • 代码演示
    • 多个界定符分割字符串
      • 代码演示
      • 注意
      • 总结


    • 在日常学习及工作中,不论是在解析数据还是在产出输出,使用python最多的就是常用的基本数据结构如:字符串、列表、字典、元组等等等
    • 各种操作无非就是:将某种数据结构通过自定义的方法、内置方法转换成另一种数据结构,当我们熟悉python内置方法后,操作会更加简便

    单个界定符分割字符串

    • string对象的 split() 方法只适应于非常简单的字符串分割情形,它并不允许有
      多个分隔符或者是分隔符周围不确定的空格

    代码演示

    line = 'abc,def,ghi,jkl,mno'
    line.split(',')
    
    • 1
    • 2

    在这里插入图片描述

    • .split()方法只适合一个界定符分割简单字符串的情况

    多个界定符分割字符串

    • 函数re.split() 允许你为分隔符指定多个正则匹配模式,来达到使用多个界定符分割字符串的目的

    代码演示

    import re
    
    line1 = 'abc, def; ghi, jkl;mno'
    re.split(r'[;,\s]\s*', line1)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    • 在上面的例子中,分隔符可以是逗号,分号;或者是空格,并且后面紧跟着任意个的空格。只要这个模式被找到,那么匹配的分隔符两边的实体都会被当成是结果中的元素返回。返回结果为一个字段列表,这个跟 str.split() 返回值类型是一样的

    注意

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

    在这里插入图片描述

    • 如果你不想保留分割字符串到结果列表中去,但仍然需要使用到括号来分组正则表
      达式的话,确保你的分组是非捕获分组,形如 (?:…) 。比如:
    re.split(r'(?:;|,|\s)\s*', line)
    
    • 1

    在这里插入图片描述

    总结

    • 当你只是简单的对字符串根据一个固定的分割符进行分割时,使用str.split()函数即可
    • 当你不确定分割字符串时,使用re.split()函数是非常方便的,不管是[]正则匹配模式,还是()分组正则表达式都是可以的
    • 值得注意的是如果使用()分组且数据结果中不需要保留分割字符串时,需要添加(?:…) ?:这样的前缀即可
  • 相关阅读:
    浅谈One API
    Interview preparation--案例加密后数据的模糊查询
    echarts点击按钮排序
    Mybatis 使用typeHandler自定义类型转换
    主流数据库之索引及其例子
    OLAP与OLTP:数据处理系统的比较分析
    【若依vue框架学习】1.获取验证码/登录提交loginFrom获得认证token
    CSS3 盒模型- 外边距折叠
    Pandas常用操作命令(四)——数据切片、筛选
    mysql面试题5:索引、主键、唯一索引、联合索引的区别?什么情况下设置了索引但无法使用?并且举例说明
  • 原文地址:https://blog.csdn.net/qq_45261963/article/details/127996336
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号