[Python-Dev] Re: String module
Guido van Rossum
guido@python.org
Wed, 29 May 2002 14:13:20 -0400
> Instead of making direct substitutes for the character lists, I
> propose we take advantage of the opportunity and provide them as
> mappings rather than strings. That way, we can get O(1) behavior
> instead of O(n) behavior for code like: if c in str.printable:
> c='*'. If someone needs to know the contents, they can run
> str.printable.keys(). Also, because the dictionary is mutable,
> someone can (at runtime) expand or contract the definitions:
> str.whitespace.append('_').
I don't like the idea of making this mutable at all.
But perhaps these should be replaced by predicates on strings?
Most of the constants already have a predicate companion:
whitespace -- isspace()
lowercase -- islower()
uppercase -- isupper()
letters -- isalpha()
digits -- isdigit()
That leaves:
hexdigits -- isxdigit()
octdigits -- isodigit()
punctuation -- ispunct()
printable -- isprint()
Perhaps we should add isalnum, iscntrl, is graph, to match <ctype.h>?
Or perhaps not? (Maybe I'd also like to add isword(), which would be
isalnum() or '_' -- this is the definition of \w in the re module.)
--Guido van Rossum (home page: http://www.python.org/~guido/)