code: def sanitize(self, name, valid_fn):
          "Accumulate blocks of hex and separate blocks by underscores"
          invalid = {'\a':'a','\b':'b', '\v':'v','\f':'f','\r':'r'}
          for cc in filter(lambda el: el in name, invalid.keys()):
              raise Exception("Please use a raw string or escape control code '\%s'"
                              % invalid[cc])
          sanitized, chars = [], ''
          for split in name.split():
              for c in split:
                  if valid_fn(c): chars += str(c) if c=='_' else c
                  else:
                      short = self.shortened_character_name(c, self.eliminations,
                                                           self.substitutions,
                                                           self.transforms)
                      sanitized.extend([chars] if chars else [])
                      if short != '':
                         sanitized.append(short)
                      chars = ''
              if chars:
                  sanitized.extend([chars])
                  chars=''
          return self._process_underscores(sanitized + ([chars] if chars else [])f sanitize(self, name, valid_fn):
          "Accumulate blocks of hex and separate blocks by underscores"
          invalid = {'\a':'a','\b':'b', '\v':'v','\f':'f','\r':'r'}
          for cc in filter(lambda el: el in name, invalid.keys()):
              raise Exception("Please use a raw string or escape control code '\%s'"
                              % invalid[cc])
          sanitized, chars = [], ''
          for split in name.split():
              for c in split:
                  if valid_fn(c): chars += str(c) if c=='_' else c
                  else:
                      short = self.shortened_character_name(c, self.eliminations,
                                                           self.substitutions,
                                                           self.transforms)
                      sanitized.extend([chars] if chars else [])
                      if short != '':
                         sanitized.append(short)
                      chars = ''
              if chars:
                  sanitized.extend([chars])
                  chars=''
          return self._process_underscores(sanitized + ([chars] if chars else []))
docs: Accumulate blocks of hex and separate blocks by underscores