繁体   English   中英

德尔功能无法正常工作

[英]del function not working properly

您能否通过以下代码为我提供帮助:

#! /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)后,如果文件第4列中的数字高于“ err”,则该行将用于删除一行数据。

问题是由于某种原因,并非所有适当的行都被删除。 如果err = 500,则高于500的所有3位数字(例如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顺便说一句,这里不做任何事情-与比较两个字符串有关。

打开一个Python解释器并编写:

"1001" < "3"

您将返回True 那是因为Python正在对两个字符串进行字典比较。 您想要比较两个数字,如下所示:

1001 < 3

正如我们所期望的,这将返回False

在您的代码中, line_col[3]是一个字符串,就像err ,因此Python进行第一种比较。 您需要将两者都转换为数字,例如,通过编写以下代码获得所需的行为: float(line_col[3]) < float(err)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM