我对Python很陌生,所以请原谅我对此事的有限知识。
我的任务是从以下文本文件中读取每一行:
4 4738 6208 13891 14714
5 848 1184 3227 6539 7139
5 2748 8697 14917 15168 15751
3 3568 10845 15435
4 5136 5460 12082 15854
4 3431 4571 10360 12118
0
3 1202 8022 13163
4 2510 2603 7023 8035
3 4886 7131 8428
5 1090 1091 2613 6863 14302
3 7747 9374 11169
4 1360 2356 5122 11091
但是,我想忽略每一行的第一个元素(即所有那些4s,5s,0和3s)并读取其余部分,将数字存储到数组中。
我尝试使用函数numpy.loadtxt,numpy.genfromtxt,但是列数变化的事实似乎存在问题。我试着通过读取10列并在没有数字的情况下插入“N”来优化它,但我想知道是否有更有效的处理方式。
由于
布莱斯
答案 0 :(得分:2)
这应该在int
s
with open('path/to/file') as infile:
allNums = [[int(num) for num in line.strip().split()[1:]] for line in infile]
如果您想将其转换为int
s列表的非锯齿状列表,则:
import itertools
with open('path/to/file') as infile:
allNums = [[int(num) for num in line.strip().split()[1:]] for line in infile]
nullValue = None
allNums = list(itertools.izip.from_iterable(allNums, fillvalue=None)) # python 2.x
# allNums = list(itertools.zip.from_iterable(allNums, fillvalue=None)) # python 3.x
答案 1 :(得分:0)
读取整行,然后根据空白进行拆分。它应返回每行的正确大小列表。你将不得不忽略第一个元素。