首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想使用rfind()查找str中最高的索引,但它返回最低索引

我想使用rfind()查找str中最高的索引,但它返回最低索引
EN

Stack Overflow用户
提问于 2016-05-02 03:40:11
回答 1查看 303关注 0票数 0

因此,我正在使用Python中的一个脚本来打开一个文件,其中包含我正在解析的电子邮件标题,以找到()一组特殊的浮点数,我想在以后使用这些数字来执行一些数学功能。

这是我的代码,只是为了好玩:

代码语言:javascript
复制
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()把我放在了什么地方,就像这样:

代码语言:javascript
复制
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文档提到页面上的一些方法被废弃时,它现在是否被废弃了。

我不知道。有人得到任何信息吗?还是我只是做个菜鸟,搞错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-02 08:00:58

作为一个例子,我想您希望从一行0.84725中提取X-DSPAM-Confidence: 0.84725。如果是这样的话,你应该替换

代码语言:javascript
复制
    rnum = line[linePos + 1: (linePos + 1)+7]

使用

代码语言:javascript
复制
    rnum = line[linePos+len('X-DSPAM-Confidence: '):linePos+len('X-DSPAM-Confidence: ')+7]

find()rfind()分别返回最左或最右边的第一个字母的位置。所以你应该修正索引。然后,如果行包含一个匹配项,则find()rfind()是相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36974657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档