我正在处理一个文本文件,其中填充了由空格分隔的数字字符串。我试图在文件中找到值介于1和1,000,000之间的数字。我目前有这个只打印数字。有关如何查找数字量的任何建议?
for line in file:
for number in line:
if "0" < number < "1000000":
print(number)
答案 0 :(得分:4)
您的方法不正确,因为:
number
是一行的每个字符。所以这些只能是数字,字母等。不是多位数字;和然而,你可以很容易地计算出这个:
sum(0 < int(n) < 1000000 for line in file for n in line.split() if n.strip())
int(..)
将字符串转换为其等效(整数)数字。因此'100'
会转换为100
。如果我们想要执行数字比较,这是必要的。
split()
用于获取文件中的数字。它将寻找空白等,并在这些部分上分开。
如果数字格式正确,if n.strip()
可以是可选的。但这可能会有问题:例如,如果你有拖尾新线等等。
答案 1 :(得分:2)
如果他们的文件只有数字,你可以使用类似的东西:
with open(path, 'r') as f:
print sum(1 for x in f.read().split() if 10000 > int(x) > 0 )
这将统计整个文件中的数字,而不是单独计算每一行。
答案 2 :(得分:1)
首先,将number
变量转换为类似于此的int:int(number)
并使用ints而不是字符串进行比较。像这样:if 0 < int(number) < 10000
。
此外,添加一个计数器,如建议的一些评论。这是完成的代码:
counter = 0
for line in file:
for number in line:
if 0 < number < 1000000:
counter += 1
答案 3 :(得分:0)
file_object = open("numbers", "r")
count = 0
for line in file_object:
for number in line.split():
if int(number) > 10 and int(number) < 100:
count = count + 1
print(count)