tb added the comment:

This is my use case:
I am creating a custom DictReader class for reading and accessing the columns 
white space and case insensitive. 
For this I created a dict subclass (DictInsensitive) with a custom __getitem__ 
method. DictReaderInsensitive.__next__ overrides the original 
DictReader.__next__ by returning a DictInsensitive. I also override the 
DictReader.fieldnames property to lower/strip all fieldnames.
See http://stackoverflow.com/a/12970460/1251007 for an example. 
This is all functional with the current csv.DictReader. All entries in 
DictReaderInsensitive.fieldnames are in lower case and without white space and 
by iterating over the lines I get dictionaries where I can access the keys 
white space/case insensitive.

Now, the problem is: If I want the check wether a specific fieldname is present 
in the input file, I have strip()/lower() "by hand":
    csv_in = DictReaderInsensitive(open(input_file, 'rU'))
    if "Fieldname to check".strip().lower() in csv_in.fieldnames

To do this automatically, I created a ListInsensitive as a subclass of list:
    class ListInsensitive(list):
        def __contains__(self, item):
            return list.__contains__(self, item.strip().lower())

Now I want csv.DictReader to use that new class. I thought of overwriting the 
setter method, but here lies the current problem. I can overwrite the setter 
method, but csv.DictReader does not use the setter method internally.

My setter method looks like this:
    @fieldnames.setter
    def fieldnames(self, value):
        if value == None:
            self._fieldnames = None
        else:
            self._fieldnames = ListInsensitive()
            for name in value:
                self._fieldnames.append(name.strip().lower())

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue16297>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to