Often when working with lists of strings in python you might want to deal with the strings in a case insensitive manner. Today I had to fix an issue where I couldn't use
somelist.remove(somestring) because the
somestring variable might be in there but of a different (case)spelling.
Here was the original code:: def ss(s): return s.lower().strip() if ss(name) in names: foo(name + " was already in 'names'") names.remove(name)
The problem there is that you get an
ValueError if the
name variable is "peter" and the
names variable is ["Peter"].
Here is my solution. Let me know what you think:
def ss(s): return s.lower().strip() def ss_remove(list_, element): correct_element = None element = ss(element) for item in list_: if ss(item) == element: list_.remove(item) break L = list('ABC') L.remove('B') #L.remove('c') # will fail ss_remove(L, 'c') # will work print L # prints ['A']
Might there be a better way?
UPDATE Check out Case insensitive list remove call (part II)