[Python-Dev] Re: string.find() again (was Re: timsort for jython)
Inyeol Lee
inyeol.lee@siimage.com
Thu, 8 Aug 2002 23:08:35 -0700
Guido> I think we've argued about '' in 'abc' long enough. Tim has failed to
Guido> convince me, so '' in 'abc' returns True. Barry has checked it all
Guido> in.
I'm Inyeol Lee, happy python user. I checked other string methods and
re functions.
1. most of them assume null character between normal characters and
at the start/end of string;
'abc'.count('') -> 4
'abc'.endswith('') -> 1
'abc'.find('') -> 0
'abc'.index('') -> 0
'abc'.rfind('') -> 3
'abc'.rindex('') -> 3
'abc'.startswith('') -> 1
re.search('', 'abc').span() -> (0, 0)
re.match('', 'abc').span() -> (0, 0)
re.findall('', 'abc') -> ['', '', '', '']
re.sub('', '_', 'abc') -> '_a_b_c_'
re.subn('', '_', 'abc') -> ('_a_b_c_', 4)
2. some of them generate exception;
'' in 'abc'
'abc'.replace('', '_')
'abc'.split('')
3. one of them ignores empty match;
re.split('', 'abc') -> ['abc']
(couldn't test re.finditer but it seems to be the same as re.findall.)
Since '' in 'abc' now returns True, How about changing 'abc'.replace('')
to generate '_a_b_c_', too? It is consistent with re.sub()/subn() and the
cost for change is similar to '' in 'abc' case.
Inyeol Lee