如何将Beautiful Soup Unicode转换为十进制值?

时间:2012-12-15 22:46:07

标签: python beautifulsoup

我正在尝试使用python的Beautiful Soup Library从一个html文件中获取一堆div,并从那里得到字符串 - 这是一个货币值 - 在div中。然后删除美元符号并将其转换为小数,以便我可以使用大于和小于条件的语句来比较值。我已经用Google搜索了它,似乎无法想出一种将此unicode字符串转换为十进制值的方法。我真的可以在这里使用一些帮助。如何将unicode转换为十进制值?

这是我的最后一次尝试:

import unicodedata
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("/Users/sm/Documents/python/htmldemo.html"))
for tag in soup.findAll("div",attrs={"itemprop":"price"}) :
val = tag.string
new_val = val[8:]
workable = int(new_val)
if workable > 250:
    print(type(workable))
else:
    print(type(workable))

编辑:

当我打印new_val的类型时,我得到:

print(type(new_val))

2 个答案:

答案 0 :(得分:1)

您可以使用int()float(),具体取决于您是希望它是整数还是可以包含小数点的数字。

据我所知,你正在使用int()。由于您似乎认为这不起作用,您可能需要float()

答案 1 :(得分:0)

您确定该值是unicode,而不是一些BeautifulSoup内部表示吗?似乎在python中将unicode转换为整数没有问题。这是Python解释器的输出。

In [2]: my_unicode = u'10'

In [3]: type(my_unicode)
Out[3]: unicode

In [4]: my_int = int(my_unicode)

In [5]: type(my_int)
Out[5]: int

In [6]: my_int > 2
Out[6]: True

In [7]: my_int > 10
Out[7]: False

将一些BeautifulSoup内部类型转换为整数时可能会遇到问题。