我正在尝试处理这样的行
item1 item2 item3 item4_1 item4_2 item4_3 ...
代码是这样的
data = '''item1 item2 item3 item4_1 item4_2 item4_3'''
for row in data.split("\n"):
(item1, item2, item3, item4_list) = row.split(' ')
似乎python无法将其余项目解压缩到列表中,有任何想法吗?
答案 0 :(得分:2)
对于Python3
,也许您可以尝试(如Brad Solomon在上面的评论中提到的link for Extended Iterable Unpacking ):
(item1, item2, item3, *item4_list) = row.split(' ')
答案 1 :(得分:2)
如果使用两个步骤,并且str.split()
的maxsplit
可能是python 2或3,例如:
data = '''item1 item2 item3 item4_1 item4_2 item4_3'''
for row in data.split("\n"):
item1, item2, item3, item4_list = row.split(' ', 3)
item4_list = item4_list.split(' ')
print(item1, item2, item3, item4_list)
item1 item2 item3 ['item4_1', 'item4_2', 'item4_3']
答案 2 :(得分:2)
根据学生的建议,您想使用扩展的拆包语法-也就是说,您可以将*rest
直接放在目标列表中(与在函数定义中使用*args
的方式相同),并且它将吸收其余的值:
item1, item2, item3, *item4_list = row.split(' ')
如果您需要在Python 2中可以使用的工具,那就没有比这更好的了。 (如果已经有这样做的方法,他们就不会添加扩展解压缩功能……)这里最简单的解决方案可能是分两步来完成,使用split
的max-splits参数:
item1, item2, item3, rest = row.split(' ', 3)
item4_list = rest.split(' ')