获取条件列表中的第一个元素

时间:2018-03-02 11:24:56

标签: python python-3.x list variables

我目前有一个元素列表(文本),我试图让这个列表的第一个元素包含单词"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  

(我对编码很陌生,所以请随时给我任何提示)

2 个答案:

答案 0 :(得分:2)

我更喜欢使用发电机:

if(typeof sender !== 'string') sender = sender.toString();
if (sender.indexOf("(GMT Standard Time)") !== -1){
   // your code here
}

<强>解释

  • 生成器表达式循环遍历每个元素,直到它到达包含&#34; stars&#34;的元素。然后在调用时返回此元素 ...
  • lst = ['a', 'b', 'c', 'stars', 'starstruck', 'd', 'e', 'f'] res = next(i for i in lst if 'stars' in i) # 'stars' 是一个内置函数,用于检索迭代器的下一项。

答案 1 :(得分:0)

这就是你如何做到这一点的一个例子:

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)