使用带有多个字符串的find来搜索更大的字符串

时间:2014-08-13 17:28:15

标签: python python-2.7

使用python 2.7我试图从页面中抓取标题,但如果我找到其中一个字符,则在结束标题标记之前将其剪掉:.- _< | (因为我只是想获得公司/网站的名称)我有一些代码可以工作,但我确信必须有一个更简单的方法。我对图书馆的建议(美丽的汤,斗志等)持开放态度,但我很乐意这样做,因为我很高兴现在慢慢地学习python。您可以看到我的代码单独搜索每个字符而不是一次搜索所有字符。我希望有一个find(x或x)函数,但我找不到。稍后我也将做同样的事情,但寻找0-9范围内的任何数字。

import urllib2


opener = urllib2.build_opener()
opener.addheaders = [{'User-agent' , 'Mozilla/5.0'}]


def findTitle(webaddress):
     url = (webaddress)
     ourUrl = opener.open(url).read()
     ourUrlLower = ourUrl.lower()
     x=0
     positionStart = ourUrlLower.find("<title>",x)
     if positionStart == -1:
          return "Insert Title Here"
     endTitleSignals = ['.',',','-','_','@','+',':','|','<']
     positionEnd = positionStart + 50
     for e in endTitleSignals:              
          positionHolder = ourUrlLower.find(e ,positionStart + 1)
          if positionHolder < positionEnd and positionHolder != -1:
               positionEnd = positionHolder
     return ourUrl[positionStart + 7:positionEnd] 



print findTitle('http://www.com)

1 个答案:

答案 0 :(得分:0)

正则表达式库(re)可以提供帮助,但是如果你想了解更多关于一般python而不是专业库的知识,你可以用sets来做,这是你想要知道的约。

import sets
string = "garbage1and2recycling"
charlist = ['1', '2']
charset = sets.Set(charlist)
index = 0
for index in range(len(string)):
    if string[index] in charset: break
print(index) # 7

请注意,您可以仅使用charlist代替charset执行上述操作,但这需要更长时间才能运行。