我有一个看起来像这样的元组:
('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
答案 0 :(得分:8)
您可以使用列表理解:
rows = [row.split() for row in your_tuple]
至于.rstrip()
,你不需要它。 .split()
(没有争论!)为你照顾:
>>> ' a b c \t\n\n '.split()
['a', 'b', 'c']
答案 1 :(得分: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'
答案 2 :(得分: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
答案 3 :(得分: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)
答案 4 :(得分:0)
使用列表理解:
rows = [row.split() for row in tuple]
您可以使用:
each_item[:-1]
摆脱\n