我需要从HTML文件中过滤掉所有'rel'值,我正在使用BeautifulSoup进行过滤
for tag in self.loadtree_parser.find_all('a'):
print tag.get('rel')
给了我
[u'0']
[u'83']
[u'84']
[u'39']
[u'24']
[u'41']
我想要'纯'数字,而不是奇怪[u'']。怎么办呢?
HTML:
<a href="#" rel="0" title="" id="Ta_0">
<a href="#" rel="83" title="" id="Ta_83">
<a href="#" rel="84" title="" id="Ta_84">
<a href="#" rel="39" title="" id="Ta_39">
<a href="#" rel="24" title="" id="Ta_24">
<a href="#" rel="41" title="" id="Ta_41">
答案 0 :(得分:1)
看起来print tag.get('rel')
正在打印包含一个元素的列表。列表元素的渲染效果不如标量值;尝试在打印前使用索引提取字符串。
print tag.get('rel')[0]
答案 1 :(得分:1)
在python2中,字符串文字旁边的u
表示它是unicode。如果你使用str(u'123')
投射它,你将获得一个标准字符串。如果你想要一个数字,你可以简单地用int(u'123')
。
请记住,你在这里得到的是一个单元素列表,所以你真正需要做的是:
print int(tag.get('rel')[0])
注意 :在python3中不再有u
修饰符,因为默认情况下每个字符串都是unicode。