我使用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 –