我正在尝试编写一个带字符串(作为文件)的函数,并且在该文件中它包含单独行上的数字(整数和浮点数)。然后我想在文件中打印数字大于零。我是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
有人可以向我解释我做错了什么以及我需要做些什么来解决它?
答案 0 :(得分:1)
使用float()
function将文件中的字符串转换为数字:
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