code: def convertTransform(self, svgAttr):
          
  
          line = svgAttr.strip()
  
          ops = line[:]
          brackets = []
          indices = []
          for i, lin in enumerate(line):
              if lin in "()":
                  brackets.append(i)
          for i in range(0, len(brackets), 2):
              bi, bj = brackets[i], brackets[i+1]
              subline = line[bi+1:bj]
              subline = subline.strip()
              subline = subline.replace(',', ' ')
              subline = re.sub("[ ]+", ',', subline)
              try:
                  if ',' in subline:
                      indices.append(tuple(float(num) for num in subline.split(',')))
                  else:
                      indices.append(float(subline))
              except ValueError:
                  continue
              ops = ops[:bi] + ' '*(bj-bi+1) + ops[bj+1:]
          ops = ops.replace(',', ' ').split()
  
          if len(ops) != len(indices):
              logger.warning("Unable to parse transform expression '%s'" % svgAttr)
              return []
  
          result = []
          for i, op in enumerate(ops):
              result.append((op, indices[i]))
  
          return result
docs: Parse transform attribute string.
  
          E.g. "scale(2) translate(10,20)"
               -> [("scale", 2), ("translate", (10,20))]