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

bash/python中的for循环将一个大字符串分解为多个字符串,python,bash,Python,Bash,如何将一个大字符串分隔为多个字符串 a1=1234567891122334455667788 我想将a1字符串分解为多个字符串,如下所示 a2=123 a3=456 a4=789 a5=112 与字符串值的其余部分相同 我尝试了for循环,但没有得到预期的结果。 我在for循环中使用了if语句,一旦将3个值添加到字符串a2中,就会中断循环,因此我发现每次添加增量变量a+(a2 a3 a4)时都很难存储这3个值。您可以使用sliced()将字符串切成相等的块: >&

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

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

a2=123   
a3=456   
a4=789    
a5=112 
与字符串值的其余部分相同

我尝试了
for
循环,但没有得到预期的结果。
我在
for
循环中使用了
if
语句,一旦将3个值添加到字符串
a2
中,就会中断循环,因此我发现每次添加增量变量
a+
a2 a3 a4
)时都很难存储这3个值。

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

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

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

 s = "1234567891122334455667788"
 while i < len(s):
    print(s[i:i+3])
    i += 3
s=“1234567891221233445667788”
而我
问题不是切片,而是如何将切片后的值存储在变量中。我建议您使用
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'}

我将简单地使用如下列表理解:

a = [a1[i:i+3] for i in range(0, len(a1), 3)]
现在,如何获得变量
a1
a2
,..的实际索引<代码>一个。这是另一个我没有答案的问题

查看您的公认答案,您也可以使用dict理解:

d = {'a'+str(i/3+2): a1[i:i+3] for i in range(0, len(a1), 3)}
但这可能更难阅读。

你可以试试这个

    >>> 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']

您是否需要/想要专门使用循环?不是这样,任何事情都可以。我以为会用for循环完成,每3个字符作为一个字符串?@sandeplade:是的。。每3个字符使用单独的stringcool。。看起来不是python包的内置模块。我将下载并尝试。。谢谢这也给了我预期的结果。。感谢you@DasD当前位置我将答案更改为存储在列表中。如果答案有用,请将其标记为有用我对理解答案“a”很满意