for循环在bash / python中将一个大字符串分解为多个字符串

时间:2017-10-17 06:42:32

标签: python bash

如何将大字符串分隔为多个字符串

a1=1234567891122334455667788

我想将a1字符串分解为多个字符串,如下所示

a2=123   
a3=456   
a4=789    
a5=112 

与其余的字符串值

相同

我尝试使用for循环,但无法获得预期结果 我在if循环中使用了for语句,一旦将3个值添加到字符串a2中就打破了循环,但我发现每次添加增量都难以存储3个值变量a+a2 a3 a4

5 个答案:

答案 0 :(得分:3)

您可以使用more-itertools' sliced()将字符串切成相等的块:

>>> import more_itertools
>>> a1 = '1234567891122334455667788'
>>> list(more_itertools.sliced(a1, 3))
['123', '456', '789', '112', '233', '445', '566', '778', '8']

答案 1 :(得分:2)

问题不在于切片,问题是如何将切片值存储在变量中。我建议您使用dict,以便将其用作键值对。

a1 = '1234567891122334455667788'

d = {} ; c=2
for i in range(0,len(a1),3):
    d['a'+str(c)] = a1[i:i+3] 
    c+=1

print(d)

{'a8': '566', 'a10': '8', 'a4': '789', 'a9': '778', 'a6': '233', 'a7': '445', 'a3': '456', 'a5': '112', 'a2': '123'}

答案 2 :(得分:1)

一种简单的方法可能是将字符串切成3个字符的块

 s = "1234567891122334455667788"
 while i < len(s):
    print(s[i:i+3])
    i += 3

答案 3 :(得分:1)

我只想使用这样的列表理解:

a = [a1[i:i+3] for i in range(0, len(a1), 3)]

现在如何获取变量a1a2,..,an的实际索引。这是另一个我没有答案的问题。

查看您接受的答案,您也可以使用dict comprehension:

d = {'a'+str(i/3+2): a1[i:i+3] for i in range(0, len(a1), 3)}

但这很难阅读。

答案 4 :(得分:0)

你可以试试这个

    >>> a1='1234567891122334455667788'
>>> itr=1
>>> a2=""
>>> lst=[]
>>> for i in a1:
    #print a2
    a2=a2+str(i)
    if (itr%3==0):
        lst.append(a2)
        itr=0
        a2=''
    itr+=1

输出

  >>> lst
['123', '456', '789', '112', '233', '445', '566', '778']