У меня есть текстовый файл (12 столбцов и 10K строк). Я хочу загрузить данные из текстового файла и передать в 2D-массив - PullRequest
0 голосов
/ 13 января 2019

У меня есть текстовый файл (12 столбцов и 10K строк). Я хочу загрузить данные из текстового файла и передать в 2D-массив. Текстовый файл содержит данные, как показано ниже -
(3,9,16,40,41,44) (15,25,26,41,45,46) (1,6,21,27,39,48) (7,20,26,29,39,42) (17,23,25,29,30,43)

Я знаю, как импортировать данные из текстового файла. Я пытался кодировать

file = open('Data.txt','r')
input=[]
for line in file.readlines():
    input.append(line)
print (input)

но получи вывод вот так
['(3,9,16,40,41,44) \n', '(15,25,26,41,45,46)\n', '(1,6,21,27,39,48)\n', '(7,20,26,29,39,42)\n', '(17,23,25,29,30,43)\n']

Как можно исключить ' и \n из вывода и получить вывод, как показано ниже
[(3,9,16,40,41,44), (15,25,26,41,45,46), (1,6,21,27,39,48), (7,20,26,29,39,42), (17,23,25,29,30,43)]

Я пытался использовать
import numpy as np input = np.loadtxt("Data.txt", dtype='str') print(input)

но вывод очень похож, поскольку данные читаются в виде строки. Любое предложение высоко ценится. -Спасибо

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вот простой способ сделать это, используя ast.literal_eval():

from ast import literal_eval

with open('Data.txt','r') as file:
    data = [literal_eval(line) for line in file]

print(data)

Печатная продукция:

[(3, 9, 16, 40, 41, 44), (15, 25, 26, 41, 45, 46), (1, 6, 21, 27, 39, 48), (7, 20, 26, 29, 39, 42), (17, 23, 25, 29, 30, 43)]

0 голосов
/ 13 января 2019

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

with open('Data.txt','r') as file:
    result = [tuple(map(int, line.strip(' \n()').split(','))) for line in file]

print(result)

[(3, 9, 16, 40, 41, 44),
 (15, 25, 26, 41, 45, 46),
 (1, 6, 21, 27, 39, 48),
 (7, 20, 26, 29, 39, 42),
 (17, 23, 25, 29, 30, 43)]

Я считаю, что это ваш желаемый результат.

Первым шагом является удаление пробелов и скобок (line.strip(' \n()')). Затем разделите его на список по запятым (.split(',')), затем превратите список строк в кортеж целых (tuple(map(int, )).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...