Python将字符串的一部分比较到列表

时间:2020-06-01 17:37:24

标签: python python-3.x string list

我有多个看起来像这样的字符串:

“BPBA-SG790-NGTP-W-AU-BUN-3Y”

我想将字符串与列表进行比较,如果字符串的一部分在列表中,我只想将列表中找到的部分作为新变量。

这是我的代码:

    mylist = ["770", "790", "1470", "1490"]
    sq = “BPBA-SG790-NGTP-W-AU-BUN-3Y”

    matching = [s for s in mylist if any(xs in s for xs in sq)]
    print(matching)

>>> ['770', '790', '1470', '1490'] 

例如,这就是我想要得到的:

    mylist = ["770", "790", "1470", "1490"]
    sq = “BPBA-SG790-NGTP-W-AU-BUN-3Y”

    matching = [s for s in mylist if any(xs in s for xs in sq)]
    print(matching)

>>> 790

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

像这样,您可以使用列表理解:

mylist = ["770", "790", "1470", "1490"]
sq = "BPBA-SG790-NGTP-W-AU-BUN-3Y"

matching = [m for m in mylist if m in sq]

print(matching)

输出:

['790']

答案 1 :(得分:2)

您可以在python中使用in关键字:

mylist = ["770", "790", "1470", "1490"]
sq = "BPBA-SG790-NGTP-W-AU-BUN-3Y"
for i in mylist:
    if i in sq:
        print(i)

代码遍历列表,并在字符串中打印列表元素

答案 2 :(得分:0)

不确定我是否收到您的问题,但是以下方法可以解决问题

[x for x in mylist if x in sq]

它将为您返回出现在字符串中的列表中那些元素的列表

答案 3 :(得分:0)

尝试

mylist = ["770", "790", "1470", "1490"]
sq = "BPBA-SG790-NGTP-W-AU-BUN-3Y"

b = [x for x in mylist if sq.find(x) != -1]
print b

答案 4 :(得分:-1)

[s for s in mylist if s in sq]

对于不喜欢简洁的人:

这是一个列表理解。计算得出s中满足谓词mylist的字符串s in sq的列表(即ssq的子字符串)。

相关问题