因此,我正在使用Python中的一个脚本来打开一个文件,其中包含我正在解析的电子邮件标题,以找到()一组特殊的浮点数,我想在以后使用这些数字来执行一些数学功能。
这是我的代码,只是为了好玩:
fname = raw_input("What is the file name? ")
fhand = open(fname)
total = 0
count = 0
for line in fhand:
line = line.rstrip()
linePos = line.rfind('X-DSPAM-Confidence: ')
if linePos >= 0:
rnum = line[linePos + 1: (linePos + 1)+7]
print rnum
#total += float(rnum)
#count += 1
elif linePos == -1:
continue
#avg = total/count
#print "Average spam confidence: " + avg我试图使用rfind()来获得我正在搜索的str中的最高索引,以便从正在读取的行中获得我想要的浮点数。
我的输出设置了一个测试打印,我跑去看看我的rfind()把我放在了什么地方,就像这样:
What is the file name? mbox-short.txt
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-
-DSPAM-我对解决这个问题并不感兴趣,因为我已经可以使用find()方法来解决这个问题,只需根据需要对索引进行调整,以获得我需要使用的float()数据。
我的问题更多是关于rfind()本身,以及我是否正确地使用了它和/或遗漏了有关它的使用的文档中的一些内容。当我阅读Python2.7文档时,它声明它的使用与find()完全一样,只是它返回str的最高索引。在我的例子中,它没有,它只是表现得像find(),并返回最低的索引。
我接下来想到的另一件事是,当Python2.7文档提到页面上的一些方法被废弃时,它现在是否被废弃了。
我不知道。有人得到任何信息吗?还是我只是做个菜鸟,搞错了?
发布于 2016-05-02 08:00:58
作为一个例子,我想您希望从一行0.84725中提取X-DSPAM-Confidence: 0.84725。如果是这样的话,你应该替换
rnum = line[linePos + 1: (linePos + 1)+7]使用
rnum = line[linePos+len('X-DSPAM-Confidence: '):linePos+len('X-DSPAM-Confidence: ')+7]。find()和rfind()分别返回最左或最右边的第一个字母的位置。所以你应该修正索引。然后,如果行包含一个匹配项,则find()和rfind()是相同的。
https://stackoverflow.com/questions/36974657
复制相似问题