0

我正在尝试编写一个接受字符串(作为文件)的函数,并且在该文件中它在单独的行上包含数字(整数和浮点数)。然后我想打印文件中大于的数字零。我对 python 还很陌生,所以我在让输出正常工作时遇到了一些麻烦。到目前为止,我有:

def getPositive(filename):
    infile = open(filename, 'r')
    content = (infile.read())
    infile.close()

    for number in content:
        if number <= 0:
            print (content.remove(number))

我不断收到错误

>>> getPositive('nums1.txt')
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    getPositive('nums1.txt')
  File "/Users/XXXX/Desktop/test.py", line 8, in getPositive
    if number <= 0:
TypeError: unorderable types: str() <= int()

另外,在我的文件中,我有:

59
-3.2
12.99
-1
45.3
20

我希望它只打印:

59
12.99
45.3
20

有人可以向我解释我做错了什么以及我需要做些什么来解决它吗?

4

1 回答 1

1

使用该float()函数将文件中的字符串转换为数字:

for line in content:
    number = float(line)
    if number > 0:
        print(number)

无需读取内存中的整个文件;而是逐行处理它:

def getPositive(filename):
    with open(filename, 'r') as infile:
        for line in infile:
            number = float(line)
            if number > 0:
                print(line.rstrip())

with语句确保文件对象自动关闭。

输出:

>>> getPositive('/tmp/test.txt')
59
12.99
45.3
20
于 2013-06-02T16:21:04.680 回答