>>> x = 'this is a string'
>>> step = 3
>>> [x[i:i+step] for i in range(0, len(x), step)]
['thi', 's i', 's a', ' st', 'rin', 'g']
>>> step = 5
>>> [x[i:i+step] for i in range(0, len(x), step)]
['this ', 'is a ', 'strin', 'g']
重要的一点是:
[x[i:i+step] for i in range(0, len(x), step)]
range(0, len(x), step)为我们获取每个step字符片段开始的索引。for i in将遍历这些索引。x[i:i+step]获取从索引i开始、长度为step个字符的x片。
如果你知道你每次都会得到4块,那么你可以:
a, b, c, d = [x[i:i+step] for i in range(0, len(x), step)]
两种选择
我通常不倾向于使用正则表达式,但要将字符串分块,使用以下方法并不太糟:
和过度杀戮
您可以使用解包
如果希望一次访问3个字符的字符串,则需要使用slicing。
您可以使用如下列表理解来获取一个包含3个字符的字符串片段的列表:
重要的一点是:
range(0, len(x), step)
为我们获取每个step
字符片段开始的索引。for i in
将遍历这些索引。x[i:i+step]
获取从索引i
开始、长度为step
个字符的x
片。如果你知道你每次都会得到4块,那么你可以:
如果
3 * step < len(x) <= 4 * step
,就会发生这种情况。如果没有四个片段,那么Python将给您一个
ValueError
尝试解包这个列表。因此,我认为这项技术非常脆弱,不会使用它。你可以简单地
现在,在过去访问
a
的地方,可以访问x_pieces[0]
。对于b
,可以使用x_pieces[1]
等。这让你有更大的灵活性。相关问题 更多 >
编程相关推荐