前言
许多朋友在使用python的时候,经常会碰到各种各样的字符串切割问题。最简单固定字符切割的使用split能轻松搞定,但是往往碰到复杂就无从下手了,有时候明知道要使用正则表达式,可就是不知道如何写。
这几天帮兄弟做个小程序,刚好也同样碰到了这个问题,经过一番研究之后,终于搞定。这里将解决思路记录下来,也希望能够帮到大家。
喜欢的就点个赞吧!^_^
故事
一个不懂电脑的小白老外,在EXCEL表格中喜欢用多个空格作为分隔(佩服它敲空格的那股劲)可他这么操作硬是让我头疼了一会,今天在这里把方法记录写来方便日后使用。
首先我们来看看多空格的英文字符串长啥样 : )
ANNO METAL 5/16-NOIR 1 ROLL
期望变成这样(如下):单词之间的空格不丢失,能够将多空格作为分隔符
ANNO METAL|5/16-NOIR|1 ROLL|
思路
- 非特定空格数量,所以毫无疑问使用正则表达式;
- 正则表达式切割是按单字符匹配的,所以无法之间用来切割字符串;
- 将匹配到的字符串替换为特定字符,然后再切割;
- 特定字符,不能和字符串常见字符重合,所以选择
|
字符;
写法
# 原始字符串
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'']
网友评论