使用line.rfind查找更改的变量

时间:2013-04-19 04:35:35

标签: python datetime

我正在使用line.rfind来查找星期几。我每天运行的脚本,我总是需要在某些html脚本中找到第二天。例如,如果今天是星期五,我需要使用line.rfind在html代码中找到“Saturday”。我尝试了下面的脚本......但是由于显而易见的原因它没有用,因为它试图找到单引号内的所有内容。

#!usr/bin/env python

import urllib
from datetime import datetime
from datetime import timedelta

date = datetime.now()
date1 = date + timedelta(days=1)

class city :
        def __init__(self, city_name, link, latitude, longitude) :
                self.name = city_name
                self.url = link
                self.low0 = 0
                self.high1 = 0
                self.high2 = 0
                self.low1 = 0
                self.low2 = 0
                self.lat = latitude
                self.long = longitude

        def retrieveTemps(self) :
                filehandle = urllib.urlopen(self.url)

                # get lines from result into array
                lines = filehandle.readlines()

                # (for each) loop through each line in lines
                line_number = 0 # a counter for line number
                for line in lines:
                        line_number = line_number + 1 # increment counter

                        # find string, position otherwise position is -1

                        position0 = line.rfind('title="%(x)" % {"x": date1.strftime("%A")}')

html代码中的确切行,我试图从中抽出一天......

<abbr title="Saturday">Sat</abbr>

我需要找到'title =“星期六”'而不仅仅是“星期六”,因为有时会在这一行之前提到星期几。任何人对如何解决这个问题都有任何想法?任何帮助将非常感激!!谢谢!

编辑 - 添加下几行代码。

# string is found in line
if position0 > 0 :
        self.low0 = lines[line_number + 4].split('&')[0].split('>')[-1]

1 个答案:

答案 0 :(得分:0)

我猜你的问题是你的字符串替换不是正确的python语法。

>>> from datetime import datetime
>>> date1 = datetime.now()
>>> 'title="%(x)" % {"x": date1.strftime("%A")}'
'title="%(x)" % {"x": date1.strftime("%A")}'
>>> 'title="{}"'.format(date1.strftime("%A"))
'title="Friday"'

无关,但我注意到的另一件事是:

line_number = 0 # a counter for line number
for line in lines:
  line_number = line_number + 1 # increment counter

您应该更喜欢:for line_number, line in enumerate(lines):