do this with list comp?

Dave Brueck dave at pythonapocrypha.com
Fri Dec 12 17:58:17 CET 2003


> I want to replace all empty fields in a CSV line with 'NULL'.
>
> Here is a brute force way
>
>     def fixline(line):
>         ret = []
>         for s in line.split(','):
>             if not len(s): ret.append('NULL')
>             else: ret.append(s)
>         return ret
>
>     line = 'John,Bill,,,Fred'
>     print fixline(line)
>     # ['John', 'Bill', 'NULL', 'NULL', 'Fred']
>
> I am wondering if there is a way to do it with list comprehensions.  I
> know how I would do it with a ternary operator.....

Prepare to be flooded with answers. ;-)

>>> line = 'John,Bill,,,Fred'
>>> [x or 'NULL' for x in line.split(',')]
['John', 'Bill', 'NULL', 'NULL', 'Fred']

-Dave

P.S. I guess you are sure that the fields themselves don't have commas and that
you don't therefore need a "real" CSV parser?






More information about the Python-list mailing list