parsing engineering symbols
Bengt Richter
bokr at oz.net
Wed Dec 21 09:41:58 EST 2005
On Tue, 20 Dec 2005 23:28:12 +0100, "Fredrik Lundh" <fredrik at pythonware.com> wrote:
>Suresh Jeevanandam wrote:
>
>> I want to convert a string to float value. The string contains
>> engineering symbols.
>>
>> For example,
>>
>> s = '12k'
>>
>> I want some function which would return 12000
>> function(s)
>> => 12000.0
>> I searched the web, but could not find any function.
>
>how about:
>
>SI_prefixes = {
> 'Y':24, 'Z':21, 'E':18, 'P':15, 'T':12, 'G':9, 'M':6, 'k':3,
> 'h':2, 'd':-1, 'c':-2, 'm':-3, u'\xb5':-6, 'u':-6, 'n':-9, 'p':-12,
> 'f':-15, 'a':-18, 'z':-21, 'y':-24
>}
>
>def myfloat(str):
> try:
> exp = SI_prefixes[str[-1]]
> return float(str[:-1]) * 10**exp
> except KeyError:
> return float(str)
>
>?
Nit: why not move 10** out of myfloat into SI_prefixes
(i.e., just retrieve precalculated factors)?
Nit_2: No twinge of conscience shadowing str? ;-)
Regards,
Bengt Richter
More information about the Python-list
mailing list