NormalizeRawData.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:DonanBusGTFS 作者: aruneko 项目源码 文件源码
def create_sheet(raw_sheet, new_sheet, serv_id, poles):
    for sheet in raw_sheet:
        for time_i in range(0, sheet.ncols - 5):
            # ??????
            service_id = serv_id
            trip_id = f'{sheet.name}_{service_id}_{time_i + 1}'
            curr_sheet = new_sheet.add_sheet(trip_id)
            # stop_name?????
            stop_names = sheet.col_values(1)[6:]
            # ???2????????????
            if sheet.name == '130200':
                del(stop_names[39])
            elif sheet.name == '130210':
                del(stop_names[38])
            stop_names.insert(0, 'stop_name')
            col = 0
            for i, name in enumerate(stop_names):
                curr_sheet.write(i, col, name)
            # stop_id?????
            stop_ids = [find_stop_id(normalize('NFKC', name)) for name in stop_names]
            stop_ids[0] = ['stop_id']
            col += 1
            for i, stop_id in enumerate(stop_ids):
                if len(stop_id) == 2 and is_noboribetsu_civic_center(sheet.name):
                    stop_id = stop_id[1]
                else:
                    stop_id = stop_id[0]
                curr_sheet.write(i, col, stop_id)
            # pole_id?????
            pole_ids = [get_pole_id(p) for p in sheet.col_values(2)[6:]]
            if sheet.name == '130200':
                del(pole_ids[39])
            elif sheet.name == '130210':
                del(pole_ids[38])
            pole_ids.insert(0, 'pole_id')
            col += 1
            for i, pole_id in enumerate(pole_ids):
                if (sheet.name == '109210' and i == 45) or (sheet.name == '110210' and i == 34):
                    # 2?????2???????
                    pole_id = 'C'
                else:
                    pole_id = pole_id if pole_id is not '' else find_pole(poles, sheet.name, stop_ids[i][0], i)
                curr_sheet.write(i, col, pole_id)
            # departure_time?????
            times = [s + ':00' for s in sheet.col_values(time_i + 5)[6:]]
            if sheet.name == '130200':
                del(times[39])
            elif sheet.name == '130210':
                del(times[38])
            curr_sheet.write(0, 3, f'departure_time')
            date_format = xlwt.XFStyle()
            date_format.num_format_str = 'hh:mm:ss'
            col += 1
            for j, t in enumerate(times):
                curr_sheet.write(j + 1, col, datetime.strptime(t, '%X').time(), date_format)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号