code: def pposition(hd, details=False):
      p = re.split(r"[^\d\-+.]*", hd)
      if len(p) not in [2, 6]:
          raise ValueError("Input must contain either 2 or 6 numbers.")
      if len(p) == 2:
          x, y = float(p[0]), float(p[1])
          if details:
              numvals = 2
              raw_x = p[0]
              raw_y = p[1]
      elif len(p) == 6:
          x_p = phmsdms(" ".join(p[:3]))
          x = sexa2deci(x_p['sign'], *x_p['vals'])
          y_p = phmsdms(" ".join(p[3:]))
          y = sexa2deci(y_p['sign'], *y_p['vals'])
          if details:
              raw_x = x_p
              raw_y = y_p
              numvals = 6
      if details:
          result = dict(x=x, y=y, numvals=numvals, raw_x=raw_x,
                        raw_y=raw_y)
      else:
          result = x, y
      return result