do this with list comp?
Dave Brueck
dave at pythonapocrypha.com
Fri Dec 12 11:58:17 EST 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