【问题标题】:Dividing a string into a list of smaller strings of certain length将字符串分成一定长度的较小字符串列表
【发布时间】:2014-06-17 15:27:02
【问题描述】:

如果 我有这个字符串:

"0110100001100101011011000110110001101111"

如何在每八个字符处将其分成更小的字符串,并将其放入列表中,使其看起来像这样?:

['01101000','01100101','01101100','01101100','01101111']

到目前为止,我不知道这怎么可能。

我应该提一下,因为我的字符串是二进制的,所以长度总是 8 的倍数。

【问题讨论】:

  • 您可以轻松修改副本上给出的答案以处理字符串。
  • @jonrsharpe 我不认为其他问题的答案包含解决手头特定问题的最优雅方法。调整这些答案的难易程度取决于 OP 的 python 经验。
  • @timgeb This question 可以说更接近,但也作为副本关闭!
  • @jonrsharpe 啊,是的,那确实更合适!
  • @timgeb 我没有意识到你可以关闭作为副本的副本!

标签: python string python-2.7


【解决方案1】:
>>> mystr = "0110100001100101011011000110110001101111"
>>> [mystr[i:i+8] for i in range(0, len(mystr), 8)]
['01101000', '01100101', '01101100', '01101100', '01101111']

该解决方案使用所谓的列表理解(this 似乎是一个相当不错的教程),并且与 Aleph 的答案基本相同,只是一行。

【讨论】:

  • 如果您对这个答案的工作原理感兴趣,请谷歌 Python List Comprehension。
【解决方案2】:
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']
    

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

    您还可以显式使用匹配低位 8 位的 \d{8}

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多