python: строки из текстового файла - PullRequest
0 голосов
/ 31 марта 2020

Я хочу сохранить весь вывод test.py в массиве. Как я могу это сделать?

test.txt

1.0  0.0  3.0
2.0  0.5  0.0

6.0  4.0  2.0
1.0  0.0  3.0

test.py

a = [0,1]

with open('test.txt') as fd:
    for n, line in enumerate(fd):
        if n in a:
            t = numpy.array(line.split())
            print(t)

Вывод:

['1.0' '0.0' '3.0']
['2.0' '0.5' '0.0']

печать за l oop:

print(t)

Выход за l oop:

['2.0' '0.5' '0.0']

Как я могу получить что-то подобное?

[['1.0' '0.0' '3.0']
['2.0' '0.5' '0.0']]

Ответы [ 3 ]

0 голосов
/ 31 марта 2020

Ответ на ваш вопрос опубликован в следующем посте: Как построчно прочитать файл в список?

Подведение итогов решения @SilentGhost для вашего код:

with open('test.txt') as fd:
    t = fd.readlines()
t = [x.strip() for x in t] 
0 голосов
/ 31 марта 2020

Вы можете использовать numpy .loadtxt , чтобы загрузить текстовый файл напрямую как массив numpy.

Попробуйте это:

# If you want data type to be float
arr = np.loadtxt("test.txt", dtype=float, max_rows=2)

ИЛИ,

# If you want data type to be string
arr = np.loadtxt("data.txt", dtype=str, max_rows=2)

Выход: >>> print(arr)

# If dtype=float
[[1.0  0.0 3.0]
 [2.0  0.5 0.0]]


#If dtype=str
[['1.0' '0.0' '3.0']
 ['2.0' '0.5' '0.0']]
0 голосов
/ 31 марта 2020

Если вы заранее не знаете размер, вы можете добавить его в список, а затем преобразовать в массив numpy.

import numpy as np
a = [0,1]
d = []
with open('test.txt') as fd:
    for n, line in enumerate(fd):
        if n in a:
            d.append(line.split())

np.asarray(d)
...