在python中查找()函数

时间:2016-02-22 07:58:29

标签: python find

我刚问了一个关于堆栈溢出的问题,这就是我得到的答案。

fname = raw_input("Enter file name: ")
if len(fname) == 0:
    fname = 'mbox-short.txt'
fh = open(fname)
count = 0
total = 0
for line in fh:
    if not line.startswith("X-DSPAM-Confidence:") : continue
    count = count + 1
    pos = line.find(' ')
    total = total + float(line[pos:])
average = total/count
print 'Average spam confidence:',average

我知道如何使用find函数,但我不明白答案是如何得到的。我的问题在代码的第10行和第11行(查找和总行)。有人可以向我解释一下。谢谢。

3 个答案:

答案 0 :(得分:0)

pos = line.find(' ')

此行表示linepos将首次出现space

total = total + float(line[pos:])

并且此行表示在space后出现一个应该转换为float的字符串,并且应该将其添加到总数中:

例如,如果行是这样的:

X-DSPAM-Confidence: 4.23232

然后pos将为19(空格位置),line[pos:](从空格到字符串末尾)为"4.23232",然后您将其转换为float,这意味着{ {1}}

答案 1 :(得分:0)

我不知道输入的格式,但我可以想象它是这样的: “texte 123.33”

因此,line.find(“”)用于查找第一个空格。 之后,行[pos:]提取空格后的部分,浮动将此部分转换为浮点数以添加到总数。 在一行(而不是两行)中执行此操作的更好方法应该是:

scp username@servername:/path/path/"$file" /my/home/directory

答案 2 :(得分:0)

line.find(' ')返回line中找到子字符串" "的最低索引。

line[pos:]将尝试从pos开始从行中获取子字符串。 (切片Python字符串)。

检查Python strings