我有一个文本文件(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)
,但是输出非常相似,因为数据是作为字符串读取的。 任何建议都将受到高度赞赏。谢谢
答案 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)]