Thanks a lot, I got it working now. Thanks also to the other guys, your numerous hints were really valuable!
Kind regards, Andy John Machin schrieb:
On Sep 7, 7:04 am, Andreas Hofmann <[EMAIL PROTECTED]> wrote:Hello Folks! I've got a little problem here, which which really creeps me out at the moment. I've got some strings, which only contain numbers plus eventually one character as si-postfix (k for kilo, m for mega, g for giga). I'm trying to convert those strings to integers, with this function: def eliminate_postfix(value): if type(value) is str:Don't use "is" unless you are really sure that "==" won't do the job. Better idiom: if isinstance(value, str):value.upper()This causes your "mult is always 1" problem. You need: value = value.upper() Why? Because strings are immutable. String methods like upper return a new string, they don't change the existing string.if value.endswith('K'): mult = 1000 elif value.endswith('M'): mult = 1000000 elif value.endswith('G'): mult = 1000000000 else: mult = 1 if mult is 1:Lose "is". In fact, lose the whole "if" statement. See below.value = string.atoi(value)Don't use deprecated functions from the string module. Use the built- in float function to convert from text.else: value = string.atoi(value[:-1]) * mult return valueThose last few statements look somewhat tortuous. Try this: else: # mult would be 1, but we don't need it return float(value) return float(value[:-1]) * mult HTH, John
-- http://mail.python.org/mailman/listinfo/python-list
