匹配一个模板时，只比较起始行，未来考虑支持比较关键字段即可，现在是起始行的所有字段全匹配
        :param row:
        :return:
492526
def match(self, row, template_row=None):
        
        if not template_row:
            template_cols = self.template[0]['cols']
        else:
            template_cols = template_row['cols']

        #check if length of template_cols great than row, then match failed
        if len(template_cols)>len(row):
            return False

        for c in template_cols:
            #如果坐标大于模板最大长度，则表示不匹配，则退出
            text = c['value']
            if not text or (text and not (text.startswith('{{') and text.endswith('}}'))
                and row[c['col']-1].value == text):
                pass
            else:
                return False
        # print 'Matched'
        return True
75417
def parse_250_row(row: list) -> BasicMeterData:
    
    return BasicMeterData(row[1], row[2], row[3], row[4], row[5],
                             row[6], row[7], float(row[8]),
                             parse_datetime(row[9]), row[10], row[11], row[12],
                             float(row[13]), parse_datetime(
                                 row[14]), row[15], row[16], row[17],
                             float(row[18]), row[19], row[20],
                             parse_datetime(row[21]), parse_datetime(row[22]))
1242993
def translate_row_col_to_index(self, row, col):
        
        try:
            result = self._line_start_indexes[row]
            line = self.lines[row]
        except IndexError:
            if row < 0:
                result = self._line_start_indexes[0]
                line = self.lines[0]
            else:
                result = self._line_start_indexes[-1]
                line = self.lines[-1]

        result += max(0, min(col, len(line)))

        # Keep in range. (len(self.text) is included, because the cursor can be
        # right after the end of the text as well.)
        result = max(0, min(result, len(self.text)))
        return result
436843
def print_row(*argv):
    
    #for i in range(0, len(argv)):
        # row += f"{argv[i]}"
    # columns
    row = ""
    # id
    row += f"{argv[0]:<3}"
    # name
    row += f" {argv[1]:<13}"
    # allocation
    row += f" {argv[2]:>5}"
    # level
    #row += f"{argv[3]}"

    print(row)
291687
def process_row(self):
        
        self.log_response_message("got ROW message")
        r = self._reader
        info = self.res_info
        info.row_count += 1
        for i, curcol in enumerate(info.columns):
            curcol.value = self.row[i] = curcol.serializer.read(r)
145871
def row(self, *args):
        
        btn_array = []
        for button in args:
            btn_array.append(button)
        self.inline_keyboard.append(btn_array)
        return self
317041
def select_rows(self, rows):
        
        if not isinstance(rows, (list, tuple)): rows = [rows]
        return self.__class__([p for p in self if p.element.row in rows])
816040
def print_row(self, row, rstrip=True):
        
        line = ''.join(map(str, row))
        print(line.rstrip() if rstrip else line, file=self.table.file)
1138715
def rowkey(self, row):
        ''
        return tuple(c.getTypedValueOrException(row) for c in self.keyCols)
1039503
def numSteps(self, row):
        
        param = self._parameters[row]
        return self.nStepsForParam(param)
831364
def rows(self) -> List[List[str]]:
        
        return [list(d.values()) for d in self.data]
496735
def pretty_format_row(self, row, filler=" ", splitter="|"):
        
        return self.get_pretty_row(
            row,
            filler,
            splitter
        )
873855
public Object[] getRow(int row) {
    Object[] ret = new Object[columns.size()];
    for(int c = 0; c < columns.size(); c++) {
      ret[c] = data(row, c);
    }
    return ret;
  }
1227424
def extract_row(self,  row):
        
        new_row = []
        for col in range(self.get_grid_width()):
            new_row.append(self.get_tile(row, col))    
        return new_row
101913
def get_rows(self, sort=False):
        
        ret = []
        for _, rows in sorted(self._rows.items()) if sort else self._rows.items():
            self._rows_int2date(rows)
            ret.extend(rows)

        return ret
552078
protected List<Object> getRowCells(int row) {
		List<Object> cells = new ArrayList<>();
		for (int col = 0; col < getTable().getColumnCount(); col++) {
			Object value = getTable().getValueAt(row, col);
			cells.add(value == null ? "" : value.toString());
		}
		return cells;
	}
982839
def GetValue(self, row, col):
        
        if len(self.dataframe):
            return str(self.dataframe.iloc[row, col])
        return ''