0

曜日を見つけるために line.rfind を使用しています。私が持っているスクリプトは毎日実行され、HTML スクリプトで次の日を見つける必要があります。たとえば、今日が金曜日の場合、line.rfind を使用して HTML コード内の「土曜日」を検索する必要があります。以下のスクリプトを試してみました...しかし、単一引用符内のすべてを見つけようとしているため、明らかな理由で機能しませんでした。

#!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>

この行の前に曜日が記載されることがあるため、単に「Saturday」ではなく「title="Saturday"」を検索する必要があります。誰でもこれを解決する方法について何か考えがありますか? どんな助けでも大歓迎です!! ありがとう!

編集 - 次の数行のコードを追加します。

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

1 に答える 1

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"'

関係ありませんが、私が気付いたもう1つのことはこれです:

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):

于 2013-04-19T04:43:45.520 に答える