rrr at ronadam.com
Tue Oct 17 18:21:11 CEST 2006
Neil Cerutti wrote:
> On 2006-10-17, Ron Adam <rrr at ronadam.com> wrote:
>> Neil Cerutti wrote:
>>> On 2006-10-16, Ron Adam <rrr at ronadam.com> wrote:
>>>> I have several applications where I want to sort lists in
>>>> alphabetical order. Most examples of sorting usually sort on
>>>> the ord() order of the character set as an approximation.
>>>> But that is not always what you want.
>>> Check out strxfrm in the locale module.
>> It looks to me this would be a good candidate for a
>> configurable class. Something preferably in the string module
>> where it could be found easier.
>> Is there anyway to change the behavior of strxfrm or strcoll?
>> For example have caps before lowercase, instead of after?
> You can probably get away with writing a strxfrm function that
> spits out numbers that fit your definition of sorting.
Since that function is 'C' coded in the builtin _locale, it can't be modified by
Looking around some more I found the documentation for the corresponding C
functions and data structures. It looks like python may just wrap these.
Here's one example of how to rewrite the Unicode collate in python.
I haven't tried changing it's behavior, but I did notice it treats words with
hyphen in them differently than strxfrm.
Here's one way to change caps order.
a = ["Neil", "Cerutti", "neil", "cerutti"]
tmp = [x.swapcase() for x in a]
tmp = [x.swapcase() for x in tmp]
['Cerutti', 'cerutti', 'Neil', 'neil']
More information about the Python-list