为了从下面的html部分获取/剥离文本,我对页面进行了解析并引入了一个变量。你知道吗
从这个变量开始,我将范围缩小到这些特定的div,再到另一个名为items的变量。现在,为了去掉文本(本例中为电话号码),我使用了类似for循环的list conservation,phone=[项目.查找(class='phone')。为items中的item获取\u text()]
<div class="description">
<div class="phone">
<a href="tel:(000) 000 -0000" title="call (000) 000 -0000">
(000) 000 -0000
</a>
</div>
<div class="description">
<div class="phone">
<a href="tel:(111) 111 -1111" title="call (111) 111 -1111">
(111) 111 -1111
</a>
</div>
所以我得到了我期望的结果。结果里只有那些电话号码。 ['(000)000-0000','(111)111-1111']
我的问题是,当页面中的任何div下都没有电话号码时,会出现错误“AttributeError:'NoneType'对象没有属性'get\u text'”
我知道我们为什么会犯这个错误。当结果返回为none时,它抛出一个错误,即找不到none的get\u text属性。我已经阅读了其他关于Stackoverflow中这个错误的文章,但是我不想使用try-except方法,而是想在单行中完成它。你知道吗
这就是我想做的
运行命令,phone=[项目.查找(class='phone')对于items中的item]将获得如下内容。你知道吗
[None, <div class="phone"> <a href="tel:(000) 000-0000" title="call (000) 000-0000">(000) 000-0000</a> </div>, <div class="phone"> <a href="tel:(111) 111-1111" title="call (111) 111-1111">(111) 111-1111</a> </div>
在此之后,我们是否可以在一行中组合if else和for循环,以剥离电话号码并打印“None”,因为如果list元素具有“None”值。你知道吗
尝试这样的操作,phone=[item='None'if item=='None'else项目.查找(class='phone').get\u text()for items in items]但是,我没有得到结果。感谢您的帮助。你知道吗
参考文章One-line list comprehension: if-else variants和Python for and if on one line
问题是您将
'None'
与类NoneType
进行比较。两者不相等。要获得正确的结果,必须执行以下操作:注意我是如何将该项与
None
(一个nonetype)而不是'None'
(一个字符串)进行比较的。你知道吗相关问题 更多 >
编程相关推荐