最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】如果获得一个变量的类型,并且判断该变量是否属于某类型

Python crifan 2735浏览 0评论

【问题】

python中使用BeautifulSoup,已经导入某些类型:

from BeautifulSoup import BeautifulSoup,Tag,CData;

程序中,已经从某soup去find得到的变量,其contents列表中的包含很多值,通过type得知是:

type(singleContent)= <class ‘BeautifulSoup.NavigableString’>

type(singleContent)= <type ‘instance’>

现在的问题是,想要去判断对应的singleContent是否是该BeautifulSoup类型的instance,但是不值得如何判断。

【解决过程】

1.试了很多种方式:

if(isinstance(singleContent, BeautifulSoup)):

if(isinstance(singleContent, instance)):

结果都会出错。

2.后来参考:Type Checking in Python写了:

print "singleContent.__class__=",singleContent.__class__;

的确可以得知此变量的类型了:

singleContent.__class__= BeautifulSoup.Tag

但是想要通过下面代码判断该变量是否是BeautifulSoup.Tag:

if(BeautifulSoup.Tag == singleContent.__class__):

却会出错。

也试了:

if(isinstance(singleContent, BeautifulSoup.Tag)):

其也会出错。

搞得不值得如何才能判断该变量是否是(已经知道的类型:)BeautifulSoup.Tag了。

3.后来经过尝试才发现,原来这样写:

if(isinstance(singleContent, Tag)):

是可以的。算是终于可以正确判断该变量是否是对应的类型了。

此处,推断是,由于前面是from BeautifulSoup去导入BeautifulSoup,Tag,CData的,所以此处不能写BeautifulSoup.Tag而只能写Tag。但是也还是觉得有点怪异。

【后记】

虽然解决了上述问题。

但是后来遇到其他一个问题。

那就是,对于已知BeautifulSoup.Tag类型的变量singleContent:

<p class="cc-lisence" style="line-height:180%;">
    <a href="http://creativecommons.org/licenses/by/3.0/deed.zh" target="_blank">版权声明</a>
    :转载时请以超链接形式标明文章原始出处和作者信息及
    <a href="http://bangzhuzhongxin.blogbus.com/logs/11205960.html" target="_blank">本声明</a>
    <br />
    <a href="http://littlebasin.blogbus.com/logs/1379808.html">http://littlebasin.blogbus.com/logs/1379808.html</a>
    <br />
    <br />
</p>

想要判断去查找其所含的class:

singleContent.find(attrs={"class":"cc-lisence"})

是找不到的。

同理,通过:

print "singleContent.p=",singleContent.p;
print "singleContent.p['class']=",singleContent.p['class'];

都是无法获得对应的值的。

因为此处.p指的是对其下,去找是否包含p的标签,此处很明显,只有3个a标签和3个br标签,没有p标签。

其主标签p,暂时也不知道如何获得。

最后尝试了半天,只有这样才可以:

print "singleContent['class']=",singleContent['class'];

获得对应的class的值cc-lisence。

由此,才能实现去判断singleContent中,是否包含值为cc-lisence的class。

转载请注明:在路上 » 【已解决】如果获得一个变量的类型,并且判断该变量是否属于某类型

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.167 seconds, using 22.12MB memory