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