Python 切割/分隔多空格的英文字符串

前言

许多朋友在使用python的时候,经常会碰到各种各样的字符串切割问题。最简单固定字符切割的使用split能轻松搞定,但是往往碰到复杂就无从下手了,有时候明知道要使用正则表达式,可就是不知道如何写。
这几天帮兄弟做个小程序,刚好也同样碰到了这个问题,经过一番研究之后,终于搞定。这里将解决思路记录下来,也希望能够帮到大家。
喜欢的就点个赞吧!^_^

故事

一个不懂电脑的小白老外,在EXCEL表格中喜欢用多个空格作为分隔(佩服它敲空格的那股劲)可他这么操作硬是让我头疼了一会,今天在这里把方法记录写来方便日后使用。
首先我们来看看多空格的英文字符串长啥样 : )

   ANNO METAL          5/16-NOIR            1 ROLL 

期望变成这样(如下):单词之间的空格不丢失,能够将多空格作为分隔符

   ANNO METAL|5/16-NOIR|1 ROLL|

思路

  1. 非特定空格数量,所以毫无疑问使用正则表达式;
  2. 正则表达式切割是按单字符匹配的,所以无法之间用来切割字符串;
  3. 将匹配到的字符串替换为特定字符,然后再切割;
  4. 特定字符,不能和字符串常见字符重合,所以选择 |字符;

写法

        # 原始字符串
        desc = "ANNO METAL            5/16-NOIR           1 ROLL"
        #替换多个空格为'|'
        desc = re.sub("\s\s+","|",desc)
        #以'|'字符切割字符串
        data = desc.split("|")

正则表达式说明:
\s:匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
>+:匹配前面的子表达式一次或多次
\s\s+ :即两个空格以上的字符串(这里这样写包含非可见字符,怕那小白老外用TAB键,这样切割就异常了。

输出

   [u'ANNO METAL', u'5/16-NOIR', u'1 ROLL', u'']
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容