是否可以在python中拆分一个字符串并将每个部分拆分为一个变量以便以后使用?如果可能的话,我希望能够按长度分割,但我不确定如何使用len()。
我试过这个,但它没有得到我所需要的东西:
x = 'this is a string'
x.split(' ', 1)
print x
结果: [ '这个']
我想得到这样的结果:
a = 'this'
b = 'is'
c = 'a'
d = 'string'
答案 0 :(得分:9)
如果您想一次访问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]
获得的x
片段从索引i
开始,且字符长step
。
如果您知道每次都会完全四件,那么您可以这样做:
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]
等。这可以让您更灵活。
答案 1 :(得分:6)
您可以使用解压缩
a,b,c,d=x.split(' ');
答案 2 :(得分:5)
一些替代方案
我通常不会倾向于使用正则表达式,但是要将字符串组合起来,使用它并不是太糟糕:
>>> 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']
答案 3 :(得分:4)
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']
In [144]: s = 'this is a string'
In [145]: lenn=len(s)//3 if len(s)%3==0 else (len(s)//3)+1
In [146]: it=iter(s)
In [147]: ["".join(islice(it,3)) for _ in range(lenn)]
Out[147]: ['thi', 's i', 's a', ' st', 'rin', 'g']
答案 4 :(得分:1)
x = 'this is a string'
splitted = x.split()
count = 0
while count <= len(splitted) -1:
print splitted[count]
count = count + 1
这将在一行中打印每个部分...在这里您还可以看到如何使用len()
while循环将打印每一行,直到计数器达到最大长度
答案 5 :(得分:1)
x, i = 'this is a string', 0 #assigning two variables at once
while i <= len(x):
y = x[i: i + 3]
print y
i += 3 #i = i + 3
这包括'空格'字符('')。
如果您想保留每个号码,请将它们保存在列表中:
x, my_list, i = 'this is a string', [], 0
while i <= len(x):
y = x[i : i + 3]
my_list.append(y)
i += 3
答案 6 :(得分:0)
def tst(sentence):
print sentence
bn=sentence.split(" ");
i=0
for i in range(0,len(bn)):
a= bn[i]
i=i+1
print a
以这种方式测试:
if __name__ == '__main__':
x="my name is good"
tst(x)
答案 7 :(得分:0)
这将在字符串少于27个字的约束下产生您想要的确切输出。您可以随时使用generators,以防用完钥匙来代表块。
x = 'this is a string'
chunks = x.split(' ')
key = 'a'
for chunk in chunks:
print key + " = " + chunk
key = chr(ord(key) + 1)