Поиск в HTML-строке по строке с регулярным выражением в Python

Я пытаюсь создать словарь часов, основанный на этом календаре: http://disneyworld.disney.go.com/parks/magic-kingdom/calendar/

   

Каждая из записей календаря находится в одной строке, поэтому я решил, что лучше всего просто пройти через HTML по строкам, и если эта строка содержит часы, добавьте эти часы в словарь на соответствующую дату (несколько дней имеют несколько часовой записи).

 import urllib import re source = urllib.urlopen('http://disneyworld.disney.go.com/parks/magic-kingdom/c\ alendar/') page = source.read() prkhrs = {} def main(): parsehours() def parsehours(): #look for #:## AM - #:## PM date = r'201204\d{02}' hours = r'\d:0{2}\s\w{2}\s-\s\d:0{2}\s\w{2}' #go through page line by line for line in page: times = re.findall(hours, line) dates = re.search(date, line) if dates: start = dates.start() end = dates.end() curdate = line[start:end] #if #:## - #:## is found, a date has been found if times: #create dictionary from date, stores hours in variable #extra magic hours(emh) are stored in same format. #if entry has 2/3 hour listings, those listings are emh prkhrs[curdate]['hours'] = times #just print hours for now. will change later print prkhrs 

Проблема, с которой я сталкиваюсь, заключается в том, что когда я помещаю «строку печати» внутри цикла for, проходящей через страницу, она печатает ее за один раз, что я предполагаю, это то, что запутано.

Прямо сейчас, «print prkhrs» просто ничего не печатает, но с использованием re.findall для дат и часов печатает правильные времена, поэтому я знаю, что регулярное выражение работает. Любые предложения о том, как я могу заставить его работать?

Изменить page = source.read() на page = source.readlines()

source.read() возвращает всю страницу как одну большую строку. Итерация по строке (как и for line in page ) возвращает один символ за раз. Просто потому, что ваши переменные называются line а page не означает, что Python знает, чего вы хотите.

source.readlines() возвращает список строк, каждая из которых является линией со страницы.