On 2015-03-13 12:05, Larry Martell wrote: > I need to remove all trailing zeros to the right of the decimal > point, but leave one zero if it's whole number. > > But I can't figure out how to get the 5.0000000000000000 to be 5.0. > I've been messing with the negative lookbehind, but I haven't found > one that works for this.
You can do it with string-ops, or you can resort to regexp. Personally, I like the clarity of the string-ops version, but use what suits you. -tkc import re input = [ '14S', '5.0000000000000000', '4.56862745000000', '3.7272727272727271', '3.3947368421052630', '5.7307692307692308', '5.7547169811320753', '4.9423076923076925', '5.7884615384615383', '5.137254901960000', ] output = [ '14S', '5.0', '4.56862745', '3.7272727272727271', '3.394736842105263', '5.7307692307692308', '5.7547169811320753', '4.9423076923076925', '5.7884615384615383', '5.13725490196', ] def fn1(s): if '.' in s: s = s.rstrip('0') if s.endswith('.'): s += '0' return s def fn2(s): return re.sub(r'(\.\d+?)0+$', r'\1', s) for fn in (fn1, fn2): for i, o in zip(input, output): v = fn(i) print "%s: %s -> %s [%s]" % (v == o, i, v, o) -- https://mail.python.org/mailman/listinfo/python-list