Я пытаюсь определить функцию, которая открывает текстовый файл, сделать его N*3
матрицей. Однако строки, которые не соответствуют определенным условиям, следует пропустить, и перед продолжением чтения строк должно отображаться сообщение об ошибке.
Это мой код:
import numpy as np
def dataLoad(filename):
data=np.loadtxt(filename)
return data
Итак, у меня есть матрица, но теперь я хотел бы прочитать ее построчно, пропустить, когда условия не выполняются, отобразить сообщение об ошибке, объясняющее, что это за ошибка и на какой строке она произошла, и продолжить.
Условия:
• Первый столбец должен быть числом от 10 до 60.
• Второй столбец должен быть положительным числом.
• Третий столбец должен быть 1,2,3 или 4.
Редактировать
Я пробовал:
import numpy as np
def dataLoad(filename):
data=np.loadtxt(filename)
for row in data:
if (row[0] < 10) or (row[0] > 60):
print("Temperature is out of range")
continue
elif (row[1]<0):
print("Growth rate is negative")
continue
elif (row[2]!=1) or (row[2]!=2) or (row[2]!=3) or (row[2]!=4):
print("Bacteria is not 1, 2, 3 or 4")
continue
return data
Но это дает мне все сообщения об ошибках в начале, а затем все строки, включая те, которые должны быть исключены.
Редактировать 2
Я также пытался читать файл построчно, используя:
data = open("test.txt", "r")
line = data.readline()
if (line[0] < 10) or (line[0] > 60):
print("Temperature is out of range")
elif (line[1]<0):
print("Growth rate is negative")
elif (line[2]!=1) or (line[2]!=2) or (line[2]!=3) or (line[2]!=4):
print("Bacteria is not 1, 2, 3 or 4")
Я знаю, что строки не будут удалены, но, по крайней мере, я надеялся, что это даст мне сообщения об ошибках для правильных строк. Но это возвращает:
if (line[0] < 10) or (line[0] > 60):
TypeError: '<' not supported between instances of 'str' and 'int'