code: def from_compact_str(cls, str_pauli_term):
          
          coef_str, str_pauli_term = str_pauli_term.split('*')
          try:
              coef = int(coef_str)
          except ValueError:
              try:
                  coef = float(coef_str)
              except ValueError:
                  coef = complex(coef_str)
  
          op = sI() * coef
          if str_pauli_term == 'I':
              return op
          ma = re.fullmatch(r'(([XYZ])(\d+))+', str_pauli_term)
          if ma is None:
              raise ValueError(f"Could not parse pauli string {str_pauli_term}")
          for ma in re.finditer(r'([XYZ])(\d+)', str_pauli_term):
              op *= cls(ma.group(1), int(ma.group(2)))
  
          return op
docs: Construct a PauliTerm from the result of str(pauli_term)