code: def trains(self):
          
          for row in self._rows:
              train_no = row.get('station_train_code')
              initial = train_no[0].lower()
              if not self._opts or initial in self._opts:
                  train = [
                      # Column: '车次'
                      train_no,
                      # Column: '车站'
                      '\n'.join([
                          colored.green(row.get('from_station_name')),
                          colored.red(row.get('to_station_name')),
                      ]),
                      # Column: '时间'
                      '\n'.join([
                          colored.green(row.get('start_time')),
                          colored.red(row.get('arrive_time')),
                      ]),
                      # Column: '历时'
                      self._get_duration(row),
                      # Column: '商务'
                      row.get('swz_num'),
                      # Column: '一等'
                      row.get('zy_num'),
                      # Column: '二等'
                      row.get('ze_num'),
                      # Column: '软卧'
                      row.get('rw_num'),
                      # Column: '硬卧'
                      row.get('yw_num'),
                      # Column: '软座'
                      row.get('rz_num'),
                      # Column: '硬座'
                      row.get('yz_num'),
                      # Column: '无座'
                      row.get('wz_num')
                  ]
                  yield train
docs: Filter rows according to `headers`