python正则表达式拆分函数问题

时间:2016-12-15 04:00:37

标签: python regex python-2.7

我正在使用python2,我想在以下python正则表达式的输出中删除这些空字符串:

import re
x = "010101000110100001100001"
print re.split("([0-1]{8})", x)

输出是这样的:

['', '01010100', '', '01101000', '', '01100001', '']

我只想得到这个输出:

['01010100', '01101000', '01100001']

6 个答案:

答案 0 :(得分:4)

在这种情况下,正则表达式可能不是您想要使用的。您似乎只想将字符串拆分为 n (8)个字符组。

我从this question.

挖出答案
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']

答案 1 :(得分:2)

一种可能的方式:

print filter(None, re.split("([0-1]{8})", x))

答案 2 :(得分:1)

import re
x = "010101000110100001100001"
l = re.split("([0-1]{8})", x)
l2 = [i for i in l if i]

出:

['01010100', '01101000', '01100001']

答案 3 :(得分:1)

这正是split的内容。它是使用正则表达式作为分隔符的分割字符串。

如果您需要查找所有匹配项,请尝试使用findall:

import re
x = "010101000110100001100001"
print(re.findall("([0-1]{8})", x))

答案 4 :(得分:1)

print([a for a in re.split("([0-1]{8})", x) if a != ''])

答案 5 :(得分:0)

遵循正则表达式方法,您只需使用过滤器即可获得所需的输出。

import re
x = "010101000110100001100001"
unfiltered_list = re.split("([0-1]{8})", x)
print filter(None, unfiltered_list)

如果你运行它,你应该得到:

['01010100', '01101000', '01100001']