从文本文件创建两个列表

时间:2018-12-19 17:36:28

标签: python list

我有一个包含输入的文本文件:

1 2
3 4
5 6
7 8

我需要以下形式的结果或输出

array_1 = [1, 3, 5, 7]
array_2 = [2, 4, 6, 8]

我尝试了以下代码:

arr=[]
f = open("file_path","r")
#read line into array

for line in f.read lines():
array_1 = arr.append(line.split()[0])
array_2 = arr.append(line.split()[1])

print(arr)

2 个答案:

答案 0 :(得分:1)

为什么要附加和分配结果? (即None)。结果,所有数字落在arr中,array_1array_2均为None

一些修复:

  • 在两个列表中直接使用append,忘记arr
  • 附加时转换为整数

像这样:

array_1 = []
array_2 = []
f = open("file_path.txt","r")
#read line into array

for line in f.readlines():
    array_1.append(int(line.split()[0]))
    array_2.append(int(line.split()[1]))

现在更多pythonic:

  • 不要使用readlines,一行一行地阅读
  • 一次分裂,并立即进行整数转换解包
  • 使用with块打开文件,因此退出该块时将关闭文件

像这样:

array_1 = []
array_2 = []
with open("file_path.txt") as f:
    for line in f:
        item1,item2 = map(int,line.split())
        array_1.append(item1)
        array_2.append(item2)

答案 1 :(得分:1)

我将使用pandas软件包来处理此类文件。

您可以通过以下方式从列中获取两个数组:

import pandas as pd
df = pd.read_csv("D:/tmp/file.csv",delimiter=" ", header=None)
array_1 = df[0].values
array_2 = df[1].values

输出将是:

>>> array_1
array([1, 3, 5, 7], dtype=int64)
>>> array_2
array([2, 4, 6, 8], dtype=int64)