Python-将字符串拆分为较小的块并分配一个变量

Python-将字符串拆分为较小的块并分配一个变量,python,Python,是否可以在python中拆分一个字符串,并将拆分后的每一部分分配给一个变量以供以后使用?如果可能的话,我希望能够按长度分割,但我不确定使用len()它将如何工作 我试过了,但没有得到我需要的: x = 'this is a string' x.split(' ', 1) print x 结果: [“这个”] 我想得出这样的结果: a = 'this' b = 'is' c = 'a' d = 'string' In [77]: x = 'this is a string' In [78]:

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

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

x = 'this is a string'
x.split(' ', 1)
print x
结果: [“这个”]

我想得出这样的结果:

a = 'this'
b = 'is'
c = 'a'
d = 'string'
In [77]: x = 'this is a string'

In [78]: a,b,c,d=[[y] for y in x.split()]

In [79]: a
Out[79]: ['this']

In [80]: b
Out[80]: ['is']

In [81]: c
Out[81]: ['a']

In [82]: d
Out[82]: ['string']
>>> 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']

您可以尝试以下方法:

a = 'this'
b = 'is'
c = 'a'
d = 'string'
In [77]: x = 'this is a string'

In [78]: a,b,c,d=[[y] for y in x.split()]

In [79]: a
Out[79]: ['this']

In [80]: b
Out[80]: ['is']

In [81]: c
Out[81]: ['a']

In [82]: d
Out[82]: ['string']
>>> 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']
使用:

你可以使用解包

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

如果您想一次访问3个字符的字符串,则需要使用

您可以使用如下列表理解来获得3个字符长的字符串片段列表:

a = 'this'
b = 'is'
c = 'a'
d = 'string'
In [77]: x = 'this is a string'

In [78]: a,b,c,d=[[y] for y in x.split()]

In [79]: a
Out[79]: ['this']

In [80]: b
Out[80]: ['is']

In [81]: c
Out[81]: ['a']

In [82]: d
Out[82]: ['string']
>>> 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)
获取每个
步骤开始的索引<在
中,i的code>将迭代这些索引
x[i:i+step]
获取从索引
i
开始的
x
片段,该片段长度为
step
个字符

如果您知道每次只会得到四件,那么您可以:

a, b, c, d = [x[i:i+step] for i in range(0, len(x), step)]
如果
3*步骤x='这是一个字符串'
splitted=x.split()
计数=0
当count
x时,i='这是一个字符串',0#同时分配两个变量

而我有几个选择

我通常不倾向于使用正则表达式,但要将字符串分块,使用它也不太糟糕:

>>> 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']
通过以下方式进行测试:

 if __name__ == '__main__':
      x="my name is good"
      tst(x)

这将在字符串少于27个字的约束下产生您想要的精确输出。如果没有键来表示块,则始终可以使用

x      = 'this is a string'
chunks = x.split(' ')
key    = 'a'
for chunk in chunks:
    print key + " = " + chunk
    key = chr(ord(key) + 1)

如果要按len()拆分,您将如何执行此操作?比如说一次三个字符?我不明白,你说一次三个字符是什么意思?是的@jonclements是正确的,我试图得到一个len()函数来提取字符串中特定长度的字符,然后将每个块分配给一个变量,很像示例here@AshwiniChaudhary谢谢,这几乎就是我想要的,只需要以某种方式将变量分配给该列表,这样我就可以提取每个块以供以后使用。为什么要将结果存储在单个项目列表中?
print x
不会打印它打印的内容。拆分的结果永远不会被分配回
x
。这将是一件非常奇怪的事情,以后会使用这些变量做什么,以及它如何知道有多少。另一方面,您可以使用诸如dict之类的东西来存储具有特定键的每个项,尽管如果要处理非常长的字符串,您仍然会遇到问题。但是,为什么呢?我需要分割出一大块文本来分配给各个字段,我会编辑以显示我真正想要的,只是需要的strings@DanielFigueroa其目的是提取一个段落并将每一行分割开来,以传递给XML表单上的一组文本字段。我受工作的限制,只能做这么多。我无法编辑程序的工作方式,但只能在其中放入一些代码以供使用。因此,我将文本拉出来,将其拆分,然后分配给XML表单上的各个字段。这似乎与我真正想要做的最接近,但如何将每个范围的结果分配给变量,我可以这样做吗?a、 b,c,d=[x[i:i+step],对于范围(0,len(x),step)]中的i,如果你知道你总是能从分离列表中得到四个结果,那么你就可以做到这一点。但是如果你没有四个参数,这将抛出一个异常。谢谢…尝试了一下,发现这很难,哈哈,那么枚举就是一种方法了?谢谢你的额外解释,对学习真的很有帮助是的,我认为列表(枚举)是表达这些数据的更自然的格式,因为你不知道会有多少块。我很高兴我的解释能帮上忙。:-)由于split方法默认使用空格,因此您使用的函数调用可以压缩为a、b、c、d=x.split()。分号是不必要的。