Greg Wilson: if "abbc"[-1] is "c", and if "abbc".replace("b", "x", 1) is "axbc", then shouldn't "abbc".replace("b", "x", -1) be "abxc" (i.e. negative numbers replace the *last* occurrences of the value)? Same argument for "split", etc. >>> path = "/some/long/path/to/file.html" >>> main, parent, file = path.split("/", -2) >>> main "/some/long/path" >>> parent "to" >>> file "file.html"
Guido van Rossum: OK, that's an example. It's only so-so, because you should be using os.path.split() anyway. It's done best as follows:
temp, file = os.path.split(path) main, parent = os.path.split(temp)
Greg Wilson: Or "main, parent, file = os.path.split(path, -2)" :-)
Greg Wilson again: Question still stands --- if these are counts, then shouldn't negative values raise exceptions?
Given that it's documented with the name "maxsplit", it's not unreasonable that -1 is treated the same as 0.
Greg Wilson: But it isn't:
print sys.version 2.2a0 (#2, Apr 20 2001, 12:53:03) [GCC 2.95.2 19991024 (release)] "abbc".replace("b", "x", 0) 'abbc' "abbc".replace("b", "x", -1) 'axxc'
Thanks, Greg