3

我有一个看起来像这样的元组:

('1 2130 0 279 90 92 193 1\n', '1 186 0 299 14 36 44 1\n')

我想拆分它,以便每一列都是分开的,这样我就可以以更简单的方式访问它。

举个例子:

tuple[0][2]

会回来0

tuple[1][3]

会回来299

我的问题的第二部分是什么相当于.rstrip() 所以我可以摆脱\n

4

5 回答 5

8

您可以使用列表理解:

rows = [row.split() for row in your_tuple]

至于.rstrip(),你不需要。.split()(没有争论!)为您解决这个问题:

>>> '    a    b  c \t\n\n   '.split()
['a', 'b', 'c']
于 2013-05-29T15:37:26.613 回答
2

应用于str.split元组的每一项:

>>> tup = ('1 2130 0 279 90 92 193 1\n', '1 186 0 299 14 36 44 1\n')
>>> t = map(str.split, tup)
>>> t
[['1', '2130', '0', '279', '90', '92', '193', '1'], ['1', '186', '0', '299', '14', '36', '44', '1']]

>>> t[0][2]
'0'
>>> t[1][3]
'299'
于 2013-05-29T15:37:43.677 回答
2
>>> data = ('1 2130 0 279 90 92 193 1\n', '1 186 0 299 14 36 44 1\n')    
>>> [x.split() for x in data]
[['1', '2130', '0', '279', '90', '92', '193', '1'],
 ['1', '186', '0', '299', '14', '36', '44', '1']]

如果你想要整数值:

>>> [[int(y) for y in x.split()] for x in data]
[[1, 2130, 0, 279, 90, 92, 193, 1], [1, 186, 0, 299, 14, 36, 44, 1]]

>>> res = [[int(y) for y in x.split()] for x in data]
>>> res[0][1]
2130
于 2013-05-29T15:39:02.050 回答
2

你不想split()rstrip()元组。元组中的东西是字符串,它们是完全可拆分和可剥离的,因此您想要一种将这些操作应用于元组中每个字符串的简单方法。(实际上,您不需要 ,rstrip()因为它split()会为您处理换行符。)这就是列表推导的用武之地:

data = ('1 2130 0 279 90 92 193 1\n', '1 186 0 299 14 36 44 1\n')
data = [x.split() for x in data]

现在这最终以元组(及其元素)成为一个列表。大多数时候这很好,但如果你真的需要它是一个元组,而不是一个列表,试试这个:

data = tuple(tuple(x.split()) for x in data)
于 2013-05-29T15:41:21.923 回答
0

使用列表理解:

rows = [row.split() for row in tuple]

您可以使用:

each_item[:-1]

为了摆脱\n

于 2013-05-29T15:47:44.007 回答