Python3 解决split结果包含空字符串的四种方法
先看例子:
In [1]: s = "abc,,,fefdaf,,,123fad,,fsdfa,,,"
In [2]: s.split(',')
Out[2]: ['abc', '', '', 'fefdaf', '', '', '123fad', '', 'fsdfa', '', '', '']
方法一:列表推导式
[x for x in re.split(',|:', s) if x]
方法二:调用filter库函数
list(filter(None, s.split(',')))
方法三:使用正则表达式findall
re.findall('[A-Za-z0-9]+', s)
方法四:字符串替换
import string
In [1]: s = "abc,,,fefdaf,,,123fad,,fsdfa,,,"
In [2]: table = str.maketrans(',', ' ')
In [3]: s.translate(table).split()
Out[3]: ['abc', 'fefdaf', '123fad', 'fsdfa']
-
Note:可以用此方法实现很多功能,例如:
- 分割字符串时希望将括号去除
import string In [4]: s = "This is a (test)!" In [5]: table = str.maketrans('()', ' ') In [6]: s.translate(table).split() Out[6]: ['This', 'is', 'a', 'test', '!']