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”很满意