Создание двух списков из текстового файла - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть текстовый файл, который состоит из входных данных:

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 голосов
/ 19 декабря 2018

Я бы пошел с пакетом панд для обработки такого файла.

Затем вы можете получить два массива из столбцов следующим образом:

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)
0 голосов
/ 19 декабря 2018

Почему вы добавляете и назначаете результат?(что составляет None).Как следствие, все числа в arr и array_1 и array_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]))

теперь более питонический:

  • не используйте 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...