使用第 n+1 个分隔符“0”拆分字符串的每第 n 个字符
split-string-every-nth-character with nth+1 separator '0'
我有一系列数字是字符串,例如:
输入:'01110100001101001001110100'
我想拆分如下:
输出:['01110100', '0', '01101001', '0','01110100]
我们可以注意到第九个“0”是二进制数字列表的分隔符。
换句话说:第一个八分之一、分隔符“0”、下一个高度、分隔符“0”、下一个高度、分隔符“0”等
我知道如何使用第 n 个元素 (Split string every nth character?) 进行拆分,但这里的问题有点多 complicated:there 是分隔符 '0'
非常感谢您的帮助。
最诚挚的问候
您只想在抓取长度为 8 的切片和长度为 1 的切片之间交替,对吗?
def get_slices(string):
from itertools import islice, cycle
string_iter = iter(string)
slice_lens = cycle([8, 1])
while slc := "".join(islice(string_iter, next(slice_lens))):
yield slc
print(list(get_slices("abcdefghijklmnopqr")))
输出:
['abcdefgh', 'i', 'jklmnopq', 'r']
您可以对捕获组使用正则表达式。
import re
instr = '01110100001101001001110100'
outlist = list(sum(re.findall(r'(\d{8})(\d)', instr), ()))
print(outlist)
re.findall()
returns 元组列表,list(sum(..., ())
将其展平为单个列表。
我有一系列数字是字符串,例如: 输入:'01110100001101001001110100'
我想拆分如下: 输出:['01110100', '0', '01101001', '0','01110100]
我们可以注意到第九个“0”是二进制数字列表的分隔符。
换句话说:第一个八分之一、分隔符“0”、下一个高度、分隔符“0”、下一个高度、分隔符“0”等
我知道如何使用第 n 个元素 (Split string every nth character?) 进行拆分,但这里的问题有点多 complicated:there 是分隔符 '0'
非常感谢您的帮助。
最诚挚的问候
您只想在抓取长度为 8 的切片和长度为 1 的切片之间交替,对吗?
def get_slices(string):
from itertools import islice, cycle
string_iter = iter(string)
slice_lens = cycle([8, 1])
while slc := "".join(islice(string_iter, next(slice_lens))):
yield slc
print(list(get_slices("abcdefghijklmnopqr")))
输出:
['abcdefgh', 'i', 'jklmnopq', 'r']
您可以对捕获组使用正则表达式。
import re
instr = '01110100001101001001110100'
outlist = list(sum(re.findall(r'(\d{8})(\d)', instr), ()))
print(outlist)
re.findall()
returns 元组列表,list(sum(..., ())
将其展平为单个列表。