code: def normalize_name(s):
      
      s = s.replace('-', '_').replace('.', '_').replace(' ', '_')
      if s in keyword.kwlist:
          return s + '_'
      s = '_'.join(slug(ss, lowercase=False) for ss in s.split('_'))
      if not s:
          s = '_'
      if s[0] not in string.ascii_letters + '_':
          s = '_' + s
      return s
docs: Convert a string into a valid python attribute name.
      This function is called to convert ASCII strings to something that can pass as
      python attribute name, to be used with namedtuples.
  
      >>> str(normalize_name('class'))
      'class_'
      >>> str(normalize_name('a-name'))
      'a_name'
      >>> str(normalize_name('a n\u00e4me'))
      'a_name'
      >>> str(normalize_name('Name'))
      'Name'
      >>> str(normalize_name(''))
      '_'
      >>> str(normalize_name('1'))
      '_1'