code: def _normalize_string(self, s: str) -> str:
      if self.lower_case:
          s = s.lower()
      if self.filter_pattern is not None:
          s = re.sub(self.filter_pattern, "", s)
      if self.hash_numbers:
          s = re.sub(r"\d+", "#", s)
      if self.punctuation_pattern is not None:
          s = re.sub(self.punctuation_pattern, r" \1", s)
      s = re.sub(r"\s+", r" ", s)
      return s
  
imports: import re
  from typing import Tuple
label_desc: Use image node_id 3 for calling the Preprocessor obj's underlying member method code with example usage: obj._normalize_string(s) and returns: s