Python 行的列数错误,但我可以';我找不到哪一行
我有一个非常大的文本文件(大约2.5GB),我需要使用Python将其加载并放入一个2列的numpy数组中。在文本文件中的某个地方,列数似乎有误,因此无法加载 我正试图找出这到底发生在哪里,这样我就能解决它。然而,我得到的行号并没有多大帮助。我想得到行的第一个值 该文件如下所示:Python 行的列数错误,但我可以';我找不到哪一行,python,python-2.7,numpy,Python,Python 2.7,Numpy,我有一个非常大的文本文件(大约2.5GB),我需要使用Python将其加载并放入一个2列的numpy数组中。在文本文件中的某个地方,列数似乎有误,因此无法加载 我正试图找出这到底发生在哪里,这样我就能解决它。然而,我得到的行号并没有多大帮助。我想得到行的第一个值 该文件如下所示: 1.001 1 1.002 0 1.003 3 1.004 1 etc... import numpy as np with open('paths 8_10.txt', 'r') as paths_lis
1.001 1
1.002 0
1.003 3
1.004 1
etc...
import numpy as np
with open('paths 8_10.txt', 'r') as paths_list:
for file_path in paths_list:
with open(file_path.strip(), 'r') as file:
data = np.loadtxt(file_path.strip())
t = data[:,0]
x = data[:,1]
我是这样打开文件的:
1.001 1
1.002 0
1.003 3
1.004 1
etc...
import numpy as np
with open('paths 8_10.txt', 'r') as paths_list:
for file_path in paths_list:
with open(file_path.strip(), 'r') as file:
data = np.loadtxt(file_path.strip())
t = data[:,0]
x = data[:,1]
因此,我希望t
位于程序崩溃的位置
我正在考虑一个for循环,它将值打印到停止加载的位置,但我无法使其工作。如果速度不是问题,我建议您编写一个小测试线束,如下所示:
import csv
with open('paths 8_10.txt', 'rb') as paths_list:
csv_reader = csv.reader(paths_list)
for line_number, line in enumerate(csv_reader, start=1):
if len(line) != 2:
print "Line {} has {} columns: {}".format(line_number, len(line), line)
这将允许您确定哪些条目需要修复,以便在主脚本中使用
如果需要,这种方法可以很容易地扩展到跳过错误的行或截断额外的列并自动写出文件,从而修复它以备将来使用。在这里发布跟踪可能会有所帮助。为什么行号对您帮助不大?这会告诉你(第一条)问题线的确切位置…谢谢!我试过这个,但是出于某种原因,它无法识别线条的形状。如果我这样做:打印长度(行),那么所有行的长度都是1。我想我应该先把这些列分开,对吗?你知道怎么做吗?它们之间有标签吗?如果是,请更改为
csv.reader(路径列表,分隔符='\t')