Способ работы с неполными значениями зависит от контекста вашего приложения (о котором вы еще не упомянули).
Например, вы можете просто игнорировать пропущенные значения
>>> l = ['955.159', '62.8168', '', '', '', '', '', '', '', '', '', '', '', '', '', '29', '30', '0', '0']
>>> filter(bool, l) # remove empty values
['955.159', '62.8168', '29', '30', '0', '0']
>>> map(float, filter(bool, l)) # remove empty values and convert the rest to floats
[955.15899999999999, 62.816800000000001, 29.0, 30.0, 0.0, 0.0]
Или, в качестве альтернативы, вы можете заменить их на NULL
, как вы упомянули:
>>> map(lambda x: x or 'NULL', l)
['955.159', '62.8168', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL', '29', '30', '0', '0']
Как видите, существует много разных стратегий работы с неполными данными.В любом случае, приведенные здесь примеры фрагментов могут помочь вам выбрать правильный вариант для вашей задачи.И, как вы можете видеть, я предпочитаю функциональное программирование, такое как встроенные модули, для выполнения подобных вещей, потому что это часто самый короткий и простой способ сделать это (и я не думаю, что будут какие-либо заметные различия во времени выполнения).