Python如何针对任意多的分隔符拆分字符串操作

ITxuexi_99 · · 570 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

<p>本篇文章扣丁学堂Python培训小编和大家分享一下Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作,文中会结合实例形式进行分析Python使用split()及正则表达式进行字符串拆分操作相关实现技巧,对Python开发感兴趣或者是想要学习Python开发技术的小伙伴可以参考下哦。</p> <p>&nbsp;</p> <p><img alt="" src="https://5b0988e595225.cdn.sohucs.com/images/20180831/85dec3b938244b588bec5df6cf4f49aa.png" /></p> <p>​</p> <p>问题:将分隔符(以及分隔符之间的空格)不一致的字符串拆分为不同的字段。</p> <p>解决方案:使用更为灵活的re.split()方法,该方法可以为分隔符指定多个模式。</p> <p>说明:字符串对象的split()只能处理简单的情况,而且不支持多个分隔符,对分隔符周围可能存在的空格也无能为力。</p> <p># example.py</p> <p>#</p> <p># Example of splitting a string on multiple delimiters using a regex</p> <p>import re #导入正则表达式模块</p> <p>line = &#39;asdf fjdk; afed, fjek,asdf, &nbsp;&nbsp;foo&#39;</p> <p># (a) Splitting on space, comma, and semicolon</p> <p>parts = re.split(r&#39;[;,\s]\s*&#39;, line)</p> <p>print(parts)</p> <p># (b) 正则表达式模式中使用&ldquo;捕获组&rdquo;,需注意捕获组是否包含在括号中,使用捕获组导致匹配的文本也包含在最终结果中</p> <p>fields = re.split(r&#39;(;|,|\s)\s*&#39;, line)</p> <p>print(fields)</p> <p># (c) 根据上文的分隔字符改进字符串的输出</p> <p>values = fields[::2]</p> <p>delimiters = fields[1::2]</p> <p>delimiters.append(&#39;&#39;)</p> <p>print(&#39;value =&#39;, values)</p> <p>print(&#39;delimiters =&#39;, delimiters)</p> <p>newline = &#39;&#39;.join(v+d for v,d in zip(values, delimiters))</p> <p>print(&#39;newline =&#39;, newline)</p> <p># (d) 使用非捕获组(?:...)的形式实现用括号对正则表达式模式分组,且不输出分隔符</p> <p>parts = re.split(r&#39;(?:,|;|\s)\s*&#39;, line)</p> <p>print(parts)</p> <p>&gt;&gt;&gt; ================================ RESTART ================================</p> <p>&gt;&gt;&gt;</p> <p>[&#39;asdf&#39;, &#39;fjdk&#39;, &#39;afed&#39;, &#39;fjek&#39;, &#39;asdf&#39;, &#39;foo&#39;]</p> <p>[&#39;asdf&#39;, &#39; &#39;, &#39;fjdk&#39;, &#39;;&#39;, &#39;afed&#39;, &#39;,&#39;, &#39;fjek&#39;, &#39;,&#39;, &#39;asdf&#39;, &#39;,&#39;, &#39;foo&#39;]</p> <p>value = [&#39;asdf&#39;, &#39;fjdk&#39;, &#39;afed&#39;, &#39;fjek&#39;, &#39;asdf&#39;, &#39;foo&#39;]</p> <p>delimiters = [&#39; &#39;, &#39;;&#39;, &#39;,&#39;, &#39;,&#39;, &#39;,&#39;, &#39;&#39;]</p> <p>newline = asdf fjdk;afed,fjek,asdf,foo</p> <p>[&#39;asdf&#39;, &#39;fjdk&#39;, &#39;afed&#39;, &#39;fjek&#39;, &#39;asdf&#39;, &#39;foo&#39;]</p> <p>&gt;&gt;&gt;</p> <p>最后想要了解更多关于Python开发方面内容的小伙伴,请关注扣丁学堂官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Python开发环境搭建视频,通过千锋扣丁学堂金牌讲师在线录制的Python开发教程,让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:279521237。</p>

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

570 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传