original_docstring: 
      fix string to be a 'good' filename, with very few special
      characters and no more than 1 '.'.
  
      More restrictive than most OSes, but avoids nasty cases.
      
docstring: fix string to be a 'good' filename, with very few special
  characters and no more than 1 '.'.
  
  More restrictive than most OSes, but avoids nasty cases.
docstring_tokens: fix string to be a ' good ' filename with very few special characters and no more than 1 ' . ' . More restrictive than most OSes but avoids nasty cases .
code: def fix_filename(s):
      """
      fix string to be a 'good' filename, with very few special
      characters and no more than 1 '.'.
  
      More restrictive than most OSes, but avoids nasty cases.
      """
      t = str(s).translate(maketrans(BAD_FILECHARS, GOOD_FILECHARS))
      if t.count('.') > 1:
          for i in range(t.count('.') - 1):
              idot = t.find('.')
              t = "%s_%s" % (t[:idot], t[idot+1:])
      return t
code_tokens: def fix_filename ( s ) : t = str ( s ) . translate ( maketrans ( BAD_FILECHARS , GOOD_FILECHARS ) ) if t . count ( '.' ) > 1 : for i in range ( t . count ( '.' ) - 1 ) : idot = t . find ( '.' ) t = "%s_%s" % ( t [ : idot ] , t [ idot + 1 : ] ) return t
short_docstring: fix string to be a 'good' filename, with very few special
  characters and no more than 1 '.
short_docstring_tokens: fix string to be a ' good ' filename with very few special characters and no more than 1 ' .
comment: """
      fix string to be a 'good' filename, with very few special
      characters and no more than 1 '.'.
  
      More restrictive than most OSes, but avoids nasty cases.
      """