The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.
|
 |
|
Dev Shed Forums
> Programming Languages
> Python Programming
|
How to sort list of String without considering Special characters and with case insen
Discuss How to sort list of String without considering Special characters and with case insen in the Python Programming forum on Dev Shed. How to sort list of String without considering Special characters and with case insen Python Programming forum discussing coding techniques, tips and tricks, and Zope related information. Python was designed from the ground up to be a completely object-oriented programming language.
|
|
 |
|
|
|
|

Dev Shed Forums Sponsor:
|
|
|

November 27th, 2012, 11:34 AM
|
|
Registered User
|
|
Join Date: Jun 2012
Posts: 2
Time spent in forums: 37 m 52 sec
Reputation Power: 0
|
|
|
How to sort list of String without considering Special characters and with case insen
Please let me know how to sort the list of String in either ascending / descending order without considering special characters and case.
ex: list1=['test1_two','testOne','testTwo','test_one']
Applying the list.sort /sorted method results in sorted list ['test1_two', 'testOne', 'testTwo', 'test_one']
but the without considering the special characters and case it should be
['testOne','test_one', 'test1_two','testTwo'] OR ['test_one','testOne','testTwo', 'test1_two' ]
list.sort /sorted method sorts based on the ascii value of the characters but Please let me knwo how do i achieve my expected one
|

November 27th, 2012, 11:48 AM
|
 |
Contributing User
|
|
Join Date: May 2012
Location: 39N 104.28W
Posts: 97
Time spent in forums: 1 Day 15 h 26 m
Reputation Power: 2
|
|
Quote: | Originally Posted by hisan Please let me know how to sort the list of String in either ascending / descending order without considering special characters and case.
ex: list1=['test1_two','testOne','testTwo','test_one']
Applying the list.sort /sorted method results in sorted list ['test1_two', 'testOne', 'testTwo', 'test_one']
but the without considering the special characters and case it should be
['testOne','test_one', 'test1_two','testTwo'] OR ['test_one','testOne','testTwo', 'test1_two' ]
list.sort /sorted method sorts based on the ascii value of the characters but Please let me knwo how do i achieve my expected one |
Well, I tried with a dictionary but two of the keys became identical:
Code:
>>> list1=['test1_two','testOne','testTwo','test_one']
>>> d={}
>>> for i in list1: d[i.replace('_','').lower()]=i
...
>>> list2=d.keys()
>>> list2.sort()
>>> list3=[d[i] for i in list2]
>>> list3
['test1_two', 'test_one', 'testTwo']
>>>
|

November 27th, 2012, 12:06 PM
|
 |
Contributing User
|
|
|
|
Code:
class super_duper:
'''
f is a transformation function
retain is a list of objects to keep
$ python -m doctest thisFile.py
>>> import string
>>> list1 = ['test1_two','testOne','testTwo','test_one']
>>> list1.sort(key=super_duper(retain=string.lowercase,f=string.lower))
>>> list1 == 'testOne test_one test1_two testTwo'.split()
True
'''
def __init__(self,retain,f):
self.retain = set(retain)
self.f = f
def __call__(self,o):
return ''.join(c for c in self.f(o) if c in self.retain)
__________________
[code] Code tags[/code] are essential for python code!
|
Developer Shed Advertisers and Affiliates
| Thread Tools |
Search this Thread |
|
|
|
| Display Modes |
Rate This Thread |
Linear Mode
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|