我正在使用python2
,我想从以下Python正则表达式的输出中去掉这些空字符串:
import re
x = "010101000110100001100001"
print re.split("([0-1]{8})", x)
输出结果如下:
['', '01010100', '', '01101000', '', '01100001', '']
我只想获得这个输出:
['01010100', '01101000', '01100001']
我正在使用python2
,我想从以下Python正则表达式的输出中去掉这些空字符串:
import re
x = "010101000110100001100001"
print re.split("([0-1]{8})", x)
['', '01010100', '', '01101000', '', '01100001', '']
['01010100', '01101000', '01100001']
在这种情况下,正则表达式可能不是你想要使用的。看起来你只是想将字符串分成n(8)个字符一组。
我从这个问题中借鉴了一个答案。
def split_every(n, s):
return [ s[i:i+n] for i in xrange(0, len(s), n) ]
split_every(8, "010101000110100001100001")
Out[2]: ['01010100', '01101000', '01100001']
一种可能的方式:
print filter(None, re.split("([0-1]{8})", x))
import re
x = "010101000110100001100001"
l = re.split("([0-1]{8})", x)
l2 = [i for i in l if i]
输出:
['01010100', '01101000', '01100001']
import re
x = "010101000110100001100001"
print(re.findall("([0-1]{8})", x))
print([a for a in re.split("([0-1]{8})", x) if a != ''])
根据您的正则表达式方法,您可以简单地使用过滤器来获取所需的输出。
import re
x = "010101000110100001100001"
unfiltered_list = re.split("([0-1]{8})", x)
print filter(None, unfiltered_list)
['01010100', '01101000', '01100001']