1

%正規表現を使用して int 部分を抽出し、最初の部分で割る100か分割する'%'など、いくつかの方法で 10 進数に変換できます。int()しかし、これを行うためのよりpythonicな方法があるかどうか疑問に思っていましたか?

4

2 に答える 2

3

パーセントを右から取り除き、float として解析し、100 で割ります。

float(your_string.rstrip('%')) / 100.0

ただし、これにより複数の が許可されます%が、これは良いことである場合とそうでない場合があります。最後の文字が常にであることがわかっている場合%は、文字列をスライスするだけです。

float(your_string[:-1]) / 100.0
于 2013-03-28T02:23:13.330 に答える
0

The number should come with one (and only one) %-sign, and at the end of the string:

def perc2num(p):
    p = p.strip() # get rid of whitespace after the %
    if p.endswith('%') and p.count('%') == 1:
        return float(p[:-1])
    else:
        raise ValueError('Not a percentage.')

The float() conversion will strip whitespace between the number and %.

Test:

In [11]: perc2num('3.5%')
Out[11]: 3.5

In [12]: perc2num('-0.2')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-12-9a6733e653ff> in <module>()
----> 1 perc2num('-0.2')

<ipython-input-10-44f49dc456d1> in perc2num(p)
      3         return float(p[:-1])
      4     else:
----> 5         raise ValueError('Not a percentage.')

ValueError: Not a percentage.

In [13]: perc2num('-7%')
Out[13]: -7.0

In [15]: perc2num('  23%')
Out[15]: 23.0

In [16]: perc2num('  14.5 %')
Out[16]: 14.5

In [17]: perc2num('  -21.8 %  ')
Out[17]: -21.8
于 2013-03-28T06:46:27.697 に答える