Python:拆分未知长度的输入并创建数组

时间:2018-08-22 20:59:44

标签: python arrays split strip

在Python中,我将如何创建一个包含以下内容的拆分输入的数组:

例如。)

(1,2,3)&(6,8,10)&(2,5)&(29,8,6)

-输入的是这些元组的任意数量。

-我在'&'处分割并去掉了括号

-然后我想将其转换为数组 在这种情况下:

array=
 [[1,2,3],
 [6,8,10],
 [2,5],
 [29,8,6]]

4 个答案:

答案 0 :(得分:0)

如果Something是字符串,则可以执行此操作。

something = "(1,2,3)&(6,8,10)&(2,5)&(29,8,6)"

words = something.split('&')

for i,x in enumerate(words):
    words[i] = x.replace('(','').replace(')','')

或使用列表理解而不是for循环

words[:] = [x.replace('(','').replace(')','') for x in words]

答案 1 :(得分:0)

如果您具有这样的刚性结构,则解决方法可能如下

s = "(1,2,3)&(6,8,10)&(2,5)&(29,8,6)"
l = [list(map(int, t[1:-1].split(','))) for t in s.split('&')]
print(l)  # [[1, 2, 3], [6, 8, 10], [2, 5], [29, 8, 6]]

首先将字符串用“&”分割,然后将子字符串从第二个开始到结尾,最后一个位置之前一个子字符串,用“,”分隔,map将它们分隔为int或任何其他数字类型

答案 2 :(得分:0)

如果需要更改输入字符串,这是另一种方法

data = '(1,2,3)&(6,8,10)&(2,5)&(29,8,6)'
a = []
for i in data.split('&'):
    a.append([int(j) for j in i[i.find('(')+1:i.find(')')].split(',')])
print(a)  #[[1, 2, 3], [6, 8, 10], [2, 5], [29, 8, 6]]

答案 3 :(得分:0)

You can try this approach:

>>> def to_list(s):
...     return [int(i) for i in s.strip('()').split(',')]
... 
>>> data = '(1,2,3)&(6,8,10)&(2,5)&(29,8,6)'
>>> [to_list(item) for item in data.split('&')]
[[1, 2, 3], [6, 8, 10], [2, 5], [29, 8, 6]]