Esempio n. 1
0
 def get_lessons(self, time_and_location_texts):
     lessons = []
     for i in range(0, len(time_and_location_texts) / 3):
         j = i * 3
         week_num = re.findall("\d{1,2}", str(time_and_location_texts[j]))
         weeks = [i for i in range(int(week_num[1]), int(week_num[2]) + 1)]
         weekday = re.search("星期(.+),",
                             str(time_and_location_texts[j + 1])).group(1)
         number = re.findall("\d{1,2}", str(time_and_location_texts[j + 1]))
         location = str(time_and_location_texts[j + 2]).replace(
             '<tagbr> ', '')
         location = location.replace('</tagbr>', '')
         location = location.replace(',', ' ')
         weeks_display_text = str(time_and_location_texts[j]).decode('utf8')
         weeks_raw = weeks_display_text[weeks_display_text.find(u':') +
                                        1:weeks_display_text.
                                        find(u' ')].replace(u'~', u'-')
         weeks_display = re.sub(r'0([0-9])', r'\1', weeks_raw)
         lessons.append({
             'day': chinese_weekdays[weekday.decode('utf8')],
             'start': int(number[0]),
             'end': int(number[-1]),
             'weeks': list_to_comma_separated(weeks),
             'weeks_display': weeks_display,
             'weeks_raw': weeks_raw,
             'location': location,
         })
     return lessons
Esempio n. 2
0
 def get_lessons(self, time_and_location_texts):
     lessons = []
     for i in range(0, len(time_and_location_texts) / 3):
         j = i * 3
         week_num = re.findall("\d{1,2}", str(time_and_location_texts[j]))
         weeks = [i for i in range(int(week_num[1]), int(week_num[2]) + 1)]
         weekday = re.search("星期(.+),", str(time_and_location_texts[j+1])).group(1)
         number = re.findall("\d{1,2}", str(time_and_location_texts[j+1]))
         location = str(time_and_location_texts[j+2]).replace('<tagbr> ', '')
         location = location.replace('</tagbr>', '')
         location = location.replace(',', ' ')
         weeks_display_text = str(time_and_location_texts[j]).decode('utf8')
         weeks_raw = weeks_display_text[weeks_display_text.find(u':')+1:weeks_display_text.find(u' ')].replace(u'~', u'-')
         weeks_display = re.sub(r'0([0-9])', r'\1', weeks_raw)
         lessons.append({
             'day': chinese_weekdays[weekday.decode('utf8')],
             'start': int(number[0]),
             'end': int(number[-1]),
             'weeks': list_to_comma_separated(weeks),
             'weeks_display': weeks_display,
             'weeks_raw': weeks_raw,
             'location': location,
         })
     return lessons
Esempio n. 3
0
def get_lesson(weeks_text, day_text, start_end_text, location):
    if location == '  ':
        location = None

    if day_text == '':
        day_text = None
    else:
        day_text = int(day_text)

    # week_num = re.findall("\d{1,2}", week_text)
    # try:
    #     weeks = [i for i in range(int(week_num[0]), int(week_num[1]) + 1)]
    # except:
    #     weeks = []
    # try:
    #     weeks = weeks + [i for i in range(int(week_num[2]), int(week_num[3]) + 1)]
    # except:
    #     pass
    # if weeks == []:
    #     if week_num == []:
    #         weeks = None
    #     else:
    #         weeks = [week_num[0]]
    #         weeks = list_to_comma_separated(weeks)

    # weeks = []

    # week_num = week_text.split(',')
    # for col in week_num:
    #     wkno = re.findall("\d{1,2}", col)
    #     print wkno
    #     if len(wkno) == 2:
    #         weeks = weeks + range(int(wkno[0]), int(wkno[1]) + 1)
    #     else:
    #         weeks.append(wkno[0])

    # weeks = list_to_comma_separated(weeks)

    weeks = []
    weeks_show = '第'

    for col in week_text.split(','):
        if not col:
            pass
        elif '-' in col:
            tmp = re.findall("\d{1,2}", str(re.findall("\d{1,2}-\d{1,2}",
                                                       col)))
            weeks += range(int(tmp[0]), int(tmp[1]) + 1)
            weeks_show += tmp[0] + '-' + tmp[1] + ' '
        else:
            wkno = re.findall("\d{1,2}", col)
            if not wkno:
                pass
            elif len(wkno) == 1:
                weeks.append(int(wkno[0]))
                weeks_show += wkno[0] + ' '
            else:
                print week_text
                raise AssertionError

    weeks_show = weeks_show.rstrip()
    weeks_show += '周'
    weeks = list_to_comma_separated(weeks)

    number = re.findall("\d{1,2}", start_end_text)
    if number == []:
        number = [None, None]
    else:
        number[0] = int(number[0])

    if not day_text or not start_end_text or not week_text:
        return None

    lesson = {
        'day': day_text,
        'start': number[0],
        'end': number[0],
        'weeks': weeks,
        'weeks_raw': weeks_text,
        'weeks_display': weeks_show,
        'location': location,
    }

    return lesson
Esempio n. 4
0
def get_lesson(weeks_text, day_text, start_end_text, location):
    if location == '  ':
        location = None

    if day_text == '':
        day_text = None
    else:
        day_text = int(day_text)

    # week_num = re.findall("\d{1,2}", week_text)
    # try:
    #     weeks = [i for i in range(int(week_num[0]), int(week_num[1]) + 1)]
    # except:
    #     weeks = []
    # try:
    #     weeks = weeks + [i for i in range(int(week_num[2]), int(week_num[3]) + 1)]
    # except:
    #     pass
    # if weeks == []:
    #     if week_num == []:
    #         weeks = None
    #     else:
    #         weeks = [week_num[0]]
    #         weeks = list_to_comma_separated(weeks)

    # weeks = []

    # week_num = week_text.split(',')
    # for col in week_num:
    #     wkno = re.findall("\d{1,2}", col)
    #     print wkno
    #     if len(wkno) == 2:
    #         weeks = weeks + range(int(wkno[0]), int(wkno[1]) + 1)
    #     else:
    #         weeks.append(wkno[0])

    # weeks = list_to_comma_separated(weeks)

    weeks = []
    weeks_show = '第'

    for col in week_text.split(','):
        if not col:
            pass
        elif '-' in col:
            tmp = re.findall("\d{1,2}", str(re.findall("\d{1,2}-\d{1,2}", col)))
            weeks += range(int(tmp[0]), int(tmp[1]) + 1)
            weeks_show += tmp[0] + '-' + tmp[1] + ' '
        else:
            wkno = re.findall("\d{1,2}", col)
            if not wkno:
                pass
            elif len(wkno) == 1:
                weeks.append(int(wkno[0]))
                weeks_show += wkno[0] + ' '
            else:
                print week_text
                raise AssertionError

    weeks_show = weeks_show.rstrip()
    weeks_show += '周'
    weeks = list_to_comma_separated(weeks)

    number = re.findall("\d{1,2}", start_end_text)
    if number == []:
        number = [None, None]
    else:
        number[0] = int(number[0])

    if not day_text or not start_end_text or not week_text:
        return None

    lesson = {
        'day': day_text,
        'start': number[0],
        'end': number[0],
        'weeks': weeks,
        'weeks_raw': weeks_text,
        'weeks_display': weeks_show,
        'location': location,
    }

    return lesson
Esempio n. 5
0
    def get_lessons(self, weeks_text, day_text, start_end_text, location):
        lessons = []

        if location == '  ':
            location = None

        if day_text == '':
            day_text = None
        else:
            day_text = int(day_text)

        weeks = []
        weeks_display = u'第'
        slices = weeks_text.split(',')
        if slices[0] == weeks_text:
            slices = weeks_text.split(u'、')
        if slices[0] == weeks_text:
            slices = weeks_text.split(u',')
        for mouse in slices:
            res = []
            baidu = re.search('\d+-\d+', mouse)
            if baidu:
                data = re.findall('\d+', baidu.group(0))
                res = range(int(data[0]), int(data[1]) + 1)
                weeks_display = weeks_display + '{0}-{1}'.format(data[0], data[1])
                if u'单周' in mouse:
                    pos = weeks_display.rfind(u' ')
                    if pos != -1:
                        weeks_display = weeks_display[:pos] + u'周 '
                        weeks_display = weeks_display + u'第{0}-{1}'.format(data[0], data[1])
                    weeks_display = weeks_display + u'单周'
                    res = [i for i in res if i % 2 == 1]
                elif u'双周' in mouse:
                    pos = weeks_display.rfind(u' ')
                    if pos != -1:
                        weeks_display = weeks_display[:pos] + u'周 '
                        weeks_display = weeks_display + u'第{0}-{1}'.format(data[0], data[1])
                    weeks_display = weeks_display + u'双周'
                    res = [i for i in res if i % 2 == 0]
            else:
                google = re.search('\d+', mouse)
                if google:
                    data = re.findall('\d+', google.group(0))
                    res = [int(data[0])]
                    weeks_display = weeks_display + '{0}'.format(data[0])
            weeks.extend(res)
            weeks_display = weeks_display + ' '
        weeks_display = weeks_display[:-1]
        if weeks_display[-1] != u'周':
            weeks_display = weeks_display + u'周'
        weeks.sort()
        weeks = list_to_comma_separated(weeks)
        if weeks == '':
            weeks = None
            weeks_display = None

        number = re.findall("\d{1,2}", start_end_text)
        if number == []:
            number = [None, None]
        else:
            number[0] = int(number[0])
            number[1] = int(number[1])

        if day_text == None and location == None and weeks == None and number[0] == None and number[1] == None:
            return lessons

        lessons.append({
            'day': day_text,
            'start': number[0],
            'end': number[1],
            'weeks': weeks,
            'weeks_raw': weeks_text,
            'weeks_display': weeks_display,
            'location': location,
        })

        return lessons