将一个字符串分割成特定长度的小字符串列表

4
如果我有这个字符串:
"0110100001100101011011000110110001101111"

我该如何将字符串按照每8个字符进行分割,并放入列表中,使其呈现以下形式?:
['01101000','01100101','01101100','01101100','01101111']

到目前为止,我还无法想象这是如何可能的。

值得一提的是,由于我的字符串是二进制的,所以长度总是8的倍数。


你可以轻易地修改重复回答中给出的答案,来处理字符串。 - jonrsharpe
@jonrsharpe 我认为那个其他问题的答案并没有包含解决手头特定问题最优雅的方式。那些答案的易调整程度取决于提问者的 Python 经验。 - timgeb
@timgeb 这个问题 可能更接近,但也被关闭为重复! - jonrsharpe
@jonrsharpe 哦,是的,那确实更合适! - timgeb
@timgeb 我没意识到你可以将一个重复的问题标记为另一个重复的问题! - jonrsharpe
@jonrsharpe哦,你可以吗?我不知道。如果你是在讽刺,我本来就不会把那个其他的重复问题关闭为重复问题。 :) - timgeb
3个回答

8
>>> mystr = "0110100001100101011011000110110001101111"
>>> [mystr[i:i+8] for i in range(0, len(mystr), 8)]
['01101000', '01100101', '01101100', '01101100', '01101111']

这个解决方案使用所谓的列表推导式 (这篇文章是一个相当不错的教程) ,基本上与Aleph的答案做的一样,只是在一行代码中实现了。


如果你对这个答案的工作方式感兴趣,可以搜索Python列表推导式。 - LexyStardust

3
t=[]
for i in range(len(yourstring)/8):
    t.append(yourstring[i*8: (i+1)*8])

3

您也可以使用 re 模块

import re

In [21]: s="0110100001100101011011000110110001101111"

In [22]: re.findall('.{8}',s)
Out[22]: ['01101000', '01100101', '01101100', '01101100', '01101111']

由于您的字符串只包含数字,因此我们可以使用 . 来匹配任何字符。

您还可以明确使用 \d{8},它匹配低位的8个数字。

In [23]: In [22]: re.findall('\d{8}',s)
Out[23]: ['01101000', '01100101', '01101100', '01101100', '01101111']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接