我有一个文本文件(12列和10K行)。我想从文本文件中加载数据并馈入2D数组

时间:2019-01-12 21:41:31

标签: python numpy

我有一个文本文件(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 :(得分:2)

尝试一下:

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, ))。

答案 1 :(得分:0)

这是使用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)]