Python中的文件输入和输出,剥离空间并输出到列表

时间:2013-03-21 21:27:04

标签: python

我在python中编写一个程序,从文件'var_input'中获取5行输入并将其输入到列表中,然后将每个单独的数字输入到列表中的第一个或第二个

我只是想知道在每个数字之间分隔空格然后将其附加到第一个或第二个列表的最佳方法是什么。我正在考虑使用python的split方法,但我不知道如何做到这一点

输入文件中的数据看起来像这样

18 24               
10 5
101 567
234 90
107 4567

首先应包含['18', '10', '101', '234', '107']

秒应包含['24', '5', '567', '90', '4567']

这是我到目前为止所拥有的

first = []
second = []

file_input = open('var_input')
input_list = file_input.readlines()

非常感谢你,非常感谢任何帮助

2 个答案:

答案 0 :(得分:2)

您可以使用zipsplit

执行此操作
with open('var_input') as file_input:
    input_list = file_input.readlines()
first, second = zip(*[l[:-1].split() for l in input_list])

工作原理 - [l[:-1].split() for l in input_list]是一种列表理解,它将split方法应用于每一行,使其看起来像:

[["18", "24"], ["10", "5"], ["101", "567"], ["234", "90"], ["107", "4567"]]

zip是一个函数,然后将多个列表压缩在一起(当与*一起使用时,它将输入列表中的每个项目视为单独的参数)。它通过获取每个列表的第一项,然后是每个列表的第二项来“拉链”它(如果每行上有三个或更多项,则最终会有三个或更多输出列表)。结果看起来像

[('18', '10', '101', '234', '107'), ('24', '5', '567', '90', '4567')]

答案 1 :(得分:0)

first = []
second = []

with open('var_input') as fp:
    for line in fp:
        temp = line.split()
        first.append(temp[0])
        second.append(temp[1])

这可能看起来很愚蠢,但它很简单且有效。