У меня есть программа, которая вызывает файл строк и выводит любые ошибки в stderr. Так что, если я получаю вход, который выглядит следующим образом:Python - ошибки при печати
line 1 2x 3 4
line 1 2 x3 4
lixe 251 2 3 4 5
line 1 2 3 4
line 251 2 3 4
Тогда результат должен выглядеть следующим образом:
Error in line 1:
line 1 2x 3 4
^
Error in line 2:
line 1 2 x3 4
^
Error in line 3:
lixe 251 2 3 4 5
^
Error in line 5:
line 251 2 3 4
^
Error in line 6:
line 1 2 3 4 5
^
Так вот что я для проверки ошибок:
except Exception as e:
for line in lines_file:
print >> sys.stderr, 'Error in line ' + str(line_number) + ":"
print >> sys.stderr, " " * 4 + line,
print >> sys.stderr, " " * (offset + 4) + "^"
sys.exit(1)
Но для этого код выглядит следующим образом:
Error in line 1:
line 1 2 x3 4
^
Error in line 1:
lixe 251 2 3 4 5
^
Error in line 1:
line 1 2 3 4
^
Error in line 1:
line 251 2 3 4
^
Error in line 1:
line 1 2 3 4 5
^
Error in line 1:
line 1 2 3 4 x5
^
И это только показывает одну строку. Итак, как я могу распечатать все строки? Вот мой код с Ьгу Бок:
for line in lines_file:
line_number = 1
#get offset up to start of coordinates
start = re.compile('\s*line\s*')
m = start.match(line)
offset = m.end()
try:
for i in range(4):
xy = re.compile('\s*([-]?[0-9]{1,3})\s*')
if xy.match(line,offset):
m = xy.match(line,offset)
else:
raise Exception
coordinate = m.group(1)
if int(coordinate) > 250 or int(coordinate) < -250:
raise Exception
offset = m.end()
end = re.compile('\s*$')
if not end.match(line,offset):
raise Exception
except Exception as e:
for line in lines_file:
print >> sys.stderr, 'Error in line ' + str(line_number) + ":"
print >> sys.stderr, " " * 4 + line,
print >> sys.stderr, " " * (offset + 4) + "^"
sys.exit(1)
line_number += 1
offset = 0
p = re.compile('line\s*([-]?[0-9]{1,3})\s*([-]?[0-9]{1,3})\s*([-]?[0-9]{1,3})\s*([-]?[0-9]{1,3})')
m = p.match(line)
x0 = int(m.group(1))
y0 = int(m.group(2))
x1 = int(m.group(3))
y1 = int(m.group(4))
print str(x0), str(y0), str(x1), str(y1)
вам нужно написать цикл для печати всего – ABC
какой вид петли. Это для каждого цикла, где вы идете «для x в строке»? – Chase
Хорошо, я обновил свой код, чтобы показать больше своей программы. – Chase