我使用python2
,我想在下面的蟒蛇正则表达式的输出来摆脱这些空字符串:蟒蛇正则表达式分割功能问题
import re
x = "010101000110100001100001"
print re.split("([0-1]{8})", x)
和输出是这样的:
['', '01010100', '', '01101000', '', '01100001', '']
我只想得到这个输出:
['01010100', '01101000', '01100001']
我使用python2
,我想在下面的蟒蛇正则表达式的输出来摆脱这些空字符串:蟒蛇正则表达式分割功能问题
import re
x = "010101000110100001100001"
print re.split("([0-1]{8})", x)
和输出是这样的:
['', '01010100', '', '01101000', '', '01100001', '']
我只想得到这个输出:
['01010100', '01101000', '01100001']
一种可能的方式:
print filter(None, re.split("([0-1]{8})", x))
正则表达式可能是不是你想在这种情况下使用。您似乎只想将字符串拆分为((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']
import re
x = "010101000110100001100001"
l = re.split("([0-1]{8})", x)
l2 = [i for i in l if i]
出来:
['01010100', '01101000', '01100001']
按照你的正则表达式的方法,你可以简单地使用过滤以获得你的des所需输出。
import re
x = "010101000110100001100001"
unfiltered_list = re.split("([0-1]{8})", x)
print filter(None, unfiltered_list)
如果你运行它,你应该得到:
['01010100', '01101000', '01100001']
这正是为split的。它是使用正则表达式作为分隔符来拆分字符串
如果你需要找到所有匹配尝试使用的findall代替:
import re
x = "010101000110100001100001"
print(re.findall("([0-1]{8})", x))
print([a for a in re.split("([0-1]{8})", x) if a != ''])
我曾作过类似的另一种代码这一点,我也没搞懂动态循环的东西还没有,但它是真的真棒:D –