从u` 96.9%'去除百分比的最有效方法并返回一个浮点数

时间:2014-10-15 16:32:32

标签: python string unicode type-conversion

假设我运行一个BeautifulSoup滤网并获得一些像u'96.9%'这样的unicode,我只希望将数值(和小数)打印到文件中。

制作一个将str(u'96.9%')分割为%符号并仅保留[0]第一部分(96.9)的小函数似乎非常简单,但这是最有效/最快的方式?

float(str(c).split("%")[0])
Out[227]: 96.9

1 个答案:

答案 0 :(得分:5)

使用str.rstrip()从字符串末尾删除字符:

float(c.rstrip(u'%'))
对于Unicode字符串,

float()没问题,不需要先将值转换为字符串。在str.rstrip()对象上调用unicode时,最好传入unicode对象以指定要删除的字符。

您也可能想要删除空白,尤其是从网页中提取空白时:

float(c.rstrip(u'% \n\t\r\xa0'))

这将删除参数中的任何字符,直到字符串的右侧没有任何字符。这意味着从末尾删除任何百分号和任意空格。 float()可以很好地处理空格,但如果百分比字符和字符串结尾之间有空格,则无法删除百分号。

演示:

>>> c = u'96.9%'
>>> float(c.rstrip(u'%'))
96.9
>>> float(c.rstrip(u'% \n\t\r\xa0'))
96.9
>>> c = u'96.9%  \n   '
>>> float(c.rstrip(u'%'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): 96.9%      
>>> float(c.rstrip(u'% \n\t\r\xa0'))
96.9