d8a*_*nja 0 python string unicode type-conversion
假设我运行一个BeautifulSoup过滤器并获得一些unicode u'96.9%',我只想将数值(和十进制)打印到文件中.
制作一个能够将str(u'96.9%')%符号分开并仅保留[0]第一部分(96.9)的小函数似乎非常简单,但这是最有效/最快的方法吗?
float(str(c).split("%")[0])
Out[227]: 96.9
Run Code Online (Sandbox Code Playgroud)
用于str.rstrip()从字符串末尾删除字符:
float(c.rstrip(u'%'))
Run Code Online (Sandbox Code Playgroud)
float()使用Unicode字符串很好,不需要先将值转换为字符串.当调用str.rstrip()一个上unicode对象,最好是在传递unicode对象以指定要删除哪些字符.
您可能也想要删除空格,尤其是在从网页中提取时:
float(c.rstrip(u'% \n\t\r\xa0'))
Run Code Online (Sandbox Code Playgroud)
这将删除参数中的任何字符,直到字符串的右侧没有任何字符.这意味着从末尾删除任何百分号和任意空格.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
Run Code Online (Sandbox Code Playgroud)