我正在调试我的程序将输入的excel文件转换成输出的csv文件。 在程序的重新格式化部分,它给出了一个错误:IndexError:list index out of range。你知道吗
我放了一个try-except循环,看看程序在哪里卡住了。当程序发现len(x)是45500时,它首先被卡住;然而,i只有12500。我真的很困惑,既然我应该在len(x)的范围内,为什么程序会在这一点上卡住。此外,当循环的except部分中的中断被移除以允许程序运行完成时,except循环继续打印len(x),len(x)是45500,i最终在45499结束。即使这样,我也应该在这个范围内。你知道吗
Make_csv是发生问题的函数;上面的两个函数是创建矩阵的函数。矩阵[0]是一个1 x 45500的矩阵,从excel输入文件中读取第一列数据。矩阵[1]是一个1 x 12500的矩阵,读取文件的第二列。你知道吗
感谢您的帮助。你知道吗
def create_mat(columns, sets):
matrix = []
for i in range(sets):
ncolT = "Time%d" % (i + 1) # from 1 to ..
ncolD = "Data%d" % (i + 1) # from 1 to ..
if len(columns[ncolT]) == len(columns[ncolD]):
length = len(columns[ncolT])
x = []
y = []
# read the time
print(ncolD + '--' + ncolT)
svline = 0
for j in columns[ncolT]:
svline = svline + 1
print(svline)
j = j.replace(',', '.')
'''
while True:
print(j)
except ValueError,j:
print("error")
'''
print(j)
try:
fNum = round(float(j), 1)
except ValueError:
print("error")
x.append(fNum)
# x.append(fNum+0.1)
# read the values measured
for j in columns[ncolD]:
try:
j = j.replace(',', '.')
fNum = float(j)
y.append(fNum)
except ValueError:
print("error")
matrix.append(x)
matrix.append(y)
else:
print("Column sizes are not matching")
return matrix
def unify_dataset(matrix, sets):
uni_x = []
uni_y = []
dt = 0
dy = 0
# align y values at zero
dy = matrix[1][0]
# unify partial measurements
for i in range(sets):
cur_x = matrix[2 * i]
cur_y = matrix[2 * i + 1]
if i > 0:
dt += cur_x[len(cur_x) - 1]
for j in range(len(cur_x)):
uni_x.append(cur_x[j] + dt)
for j in range(len(cur_y)):
uni_y.append(cur_y[j] - dy)
print(uni_y[j])
# Extent the end of the measurement
timer = uni_x[-1]
last = uni_y[-1]
drop_const = (uni_y[-10] - uni_y[-1]) / (0.2 * 10)
print(timer)
print(last)
print(drop_const)
print("debug")
matrix = []
matrix.append(uni_x)
matrix.append(uni_y)
print(matrix)
print(matrix[0])
print(matrix[1])
return matrix
def make_csv(filename, headers, matrix):
with open(filename, 'w') as csvfile:
spamwriter = csv.writer(csvfile, delimiter='\t', quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(["time (s)", "response (nm)"])
x = matrix[0]
y = matrix[1]
print(len(y))
for i in range(len(x)):
try:
xstr = "%.1f" % (x[i])
xstr = xstr.replace('.', ',')
ystr = "%.4f" % (y[i])
ystr = ystr.replace('.', ',')
spamwriter.writerow([xstr, ystr])
except IndexError:
print("index error")
print(len(x))
print(i)
#break
目前没有回答
相关问题 更多 >
编程相关推荐