Python-将字符串分割成更小的块并分配一个变量

2024-05-03 19:41:30 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在python中拆分一个字符串,并将拆分后的每个片段赋给一个变量供以后使用?如果可能的话,我希望能够按长度分割,但我不确定使用len()它会如何工作。

我试过,但没有得到我需要的:

x = 'this is a string'
x.split(' ', 1)
print x

结果: [“这个”]

我想得到这样的结果:

a = 'this'
b = 'is'
c = 'a'
d = 'string'

Tags: 字符串stringlenisthissplitprint
3条回答

两种选择

我通常不倾向于使用正则表达式,但要将字符串分块,使用以下方法并不太糟:

>>> s = 'this is a string'
>>> re.findall('.{1,3}', s)
['thi', 's i', 's a', ' st', 'rin', 'g']

和过度杀戮

>>> t = StringIO(s)
>>> list(iter(lambda: t.read(3), ''))
['thi', 's i', 's a', ' st', 'rin', 'g']

您可以使用解包

a,b,c,d=x.split(' ');

如果希望一次访问3个字符的字符串,则需要使用slicing

您可以使用如下列表理解来获取一个包含3个字符的字符串片段的列表:

>>> 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 * step < len(x) <= 4 * step,就会发生这种情况。

如果没有四个片段,那么Python将给您一个ValueError尝试解包这个列表。因此,我认为这项技术非常脆弱,不会使用它。

你可以简单地

x_pieces = [x[i:i+step] for i in range(0, len(x), step)]

现在,在过去访问a的地方,可以访问x_pieces[0]。对于b,可以使用x_pieces[1]等。这让你有更大的灵活性。

相关问题 更多 >