Check out the use of the format
command used for string formatting before continuing. This shoud allow you to safely convert any input to the format you need. The only thing here is that you need conditional formatting. Which means that the format string should be dependent upon the number that is formatting. This can easily be done like so:
fmtStr = lambda x: ' 100' if x >= 100 else (' ' if x < 0 else '{:4.1f}')
This is a function that takes a number and returns a different format string depending upon the value it is given. Now given this value, all you need to do is to format every element in the list that you have. Easiest and the most Pythonic way is to do a list comprehension. So let us generate a list, and format it ...
vals = random.random(103)*300 - 150
strVals = [fmtStr(i).format(i) for i in val]
Hope this helps.