Можете ли вы помочь мне со следующим кодом:-дель-функция не работает должным образом
#! /usr/bin/env python
stop = "0"
while(stop == "0"):
infile = open(raw_input("Enter input filename: "), 'r')
outfile = open(raw_input("Enter output filename: "), 'w')
err = raw_input("Give max intensity: ")
outfile.write("#" + "\n")
for line in infile.readlines()[1:]:
line = line.strip()
line_col = line.split()
if line_col[3] <= err:
outfile.write(line + "\n")
else:
del line
stop = raw_input("Would like to quit the program? Yes = 1 No = 0: ")
infile.close()
outfile.close()
Идея заключается в том, чтобы прочитать файл, который имеет 5 столбцов данных. После запроса пользователю ввести номер (err), он используется для удаления строки данных, если число в четвертом столбце файла превышает «err».
Проблема в том, что по какой-то причине не все соответствующие строки удалены. Если err = 500, то все трехзначные числа выше 500 (например, 653.61511, 989.76770, 614.62500 и т. Д.) Будут удалены, однако числа, которые имеют 4 цифры (например, 1001.15637, 1628.09155, 2444.60400 и т. Д.), Не являются!
Файл, который я работаю с приведен ниже:
-8,0 4,0 3,695 265,81021 265,8102
-8,0 4,0 3,721 274,50510 274,5051
-8,0 4,0 3,746 285,87451 285,8745
-8,0 4,0 3,771 301,65869 301,6587
-8,0 4,0 3,796 324,28391 324,2839
-8,0 4,0 3,821 356,89609 356,8961
-8,0 4,0 3,846 405,96741 405,9674
-8,0 4,0 3,872 488,77600 488,7760
-8,0 4,0 3,897 653,61511 653,6151
-8,0 4,0 3,922 1001,15637 1001,1564
-8,0 4,0 3,947 1628,09155 1628,0916
-8,0 4,0 3,972 2444,60400 2444,6040
-8,0 4,0 4,023 3092,76880 3092,7688
-8,0 4,0 4,048 2488,82031 2488,8203
-8,0 4,0 4,073 1653,13733 1653,1373
-8,0 4,0 4,098 989,76770 989,7677
-8,0 4,0 4,123 614,62500 614,6250
Я отнюдь не эксперт по кодированию в python, поэтому любая помощь по этому вопросу была бы принята с благодарностью ...
Что именно вы ожидаете от функции 'del' здесь? По моему чтению этого кода это нецелесообразно, и вы получите то же самое поведение, которое полностью удалит ветку 'else:' оператора 'if'. –
Использование 'del' для переменной почти никогда не является тем, что вы хотите сделать. – user2357112
Я хочу, чтобы он удалял строку данных, если число в четвертом столбце выше «err» – pinchear