我目前有一个元素列表(这是文本),我试图得到这个列表的第一个元素包含单词"stars"
。我试过这个(在其他几个方面),但它不起作用,我很丢失。
列表的名称是name_box:
i = 0
for element in name_box:
if "stars" in element:
note_finale = element
print(note_finale)
break
else:
i = i+1
(我在编码时很新,所以随时给我任何提示)
我更喜欢使用发电机:
lst = ['a', 'b', 'c', 'stars', 'starstruck', 'd', 'e', 'f']
res = next(i for i in lst if 'stars' in i)
# 'stars'
说明
next
是一个内置函数,它检索迭代器的下一项。这就是你如何做到这一点的一个例子:
name_box = ['<span class="a-icon-alt">Facebook</span>',
'<span class="a-icon-alt">Twitter</span>',
'<span class="a-icon-alt">Pinterest</span>',
'<span class="a-icon-alt">Free Shipping for Prime Members</span>',
'<span class="a-icon-alt">4.5 out of 5 stars</span>',
'<span class="a-icon-alt">Back</span>',
'<span class="a-icon-alt">4.4 out of 5 stars</span>',
'<span class="a-icon-alt">Prime</span>',
'<span class="a-icon-alt">4.6 out of 5 stars</span>']
for e in name_box:
if 'stars' in e:
print(e)
注意:我必须在列表中的字符串周围放置''
,因为您提供的输入数据丢失了。
输出:
<span class="a-icon-alt">4.5 out of 5 stars</span>
<span class="a-icon-alt">4.4 out of 5 stars</span>
<span class="a-icon-alt">4.6 out of 5 stars</span>
如果你真的想首先打破stars
你可以把一个break
声明,例如:
for e in name_box:
if 'stars' in e:
print(e)
break
[根据评论编辑]
当我打印我的name_box时,那些'确实缺失了
可能是你的name_box
真的是一个字符串,而不是一个列表。所以你需要split()
使它成为一个列表,例如:
name_box_string = '[<span class="a-icon-alt">Facebook</span>, <span class="a-icon-alt">Twitter</span>, <span class="a-icon-alt">Pinterest</span>, <span class="a-icon-alt">Free Shipping for Prime Members</span>, <span class="a-icon-alt">4.5 out of 5 stars</span>, <span class="a-icon-alt">Back</span>, <span class="a-icon-alt">4.4 out of 5 stars</span>, <span class="a-icon-alt">Prime</span>, <span class="a-icon-alt">4.6 out of 5 stars</span>]'
name_box_list = name_box_string[1:-1].split(',')
for e in name_box_list:
if 'stars' in e:
print(e)