Python 如何检查一行是否包含列表中的字符串并打印匹配的字符串

Python 如何检查一行是否包含列表中的字符串并打印匹配的字符串,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,是否有人知道如何从stringList打印匹配的字符串而不是任何字符串 提前感谢。在不知道unique.txt是什么样子的情况下,听起来你可以为和如果 stringList = {"NppFTP", "FTPBox" , "tlp"} uniqueLine = open('unique.txt', 'r', encoding='utf8', errors='ignore') for line in uniqueLine: if any(s in line for s in stringL

是否有人知道如何从
stringList
打印匹配的
字符串而不是任何
字符串


提前感谢。

在不知道unique.txt是什么样子的情况下,听起来你可以为和如果

stringList = {"NppFTP", "FTPBox" , "tlp"}
uniqueLine = open('unique.txt', 'r', encoding='utf8', errors='ignore')
for line in uniqueLine:
    if any(s in line for s in stringList):
        print ("match found")

您可以使用以下技巧完成此操作:

stringList = {"NppFTP", "FTPBox" , "tlp"}
uniqueLine = open('unique.txt', 'r', encoding='utf8', errors='ignore')

for line in uniqueLine:
    for s in stringList:
        if s in line:
            print ("match found for " + s)

您还可以使用设置
交点

import numpy as np

stringList = {"NppFTP", "FTPBox" , "tlp"}
uniqueLine = open('unique.txt', 'r', encoding='utf8', errors='ignore')
for line in uniqueLine:
    # temp will be a boolean list
    temp = [s in line for s in stringList]
    if any(temp):
        # when taking the argmax, the boolean values will be 
        # automatically casted to integers, True -> 1 False -> 0
        idx = np.argmax(temp)
        print (stringList[idx])

注意:如果存在多个匹配项,这并不能解释这一事实。

首先,我建议您将
一起使用,以打开文件,并避免程序在某个点崩溃时出现问题。其次,您可以应用
过滤器
。最后,如果您使用的是Python 3.6+,那么可以使用f字符串

stringList = {"NppFTP", "FTPBox" , "tlp"}
uniqueLine = open('unique.txt', 'r', encoding='utf8', errors='ignore')
for line in uniqueLine:
    found = set(line) & stringList
    if found:
        print("Match found: {}".format(found.pop()))
    else:
        continue

是 啊我可以很容易地做到这一点,就像重新排列我的代码一样!谢谢
stringList = {"NppFTP", "FTPBox" , "tlp"}

with open('unique.txt', 'r', encoding='utf8', errors='ignore') as uniqueLine:
    for line in uniqueLine:
        strings = filter(lambda s: s in line, stringList)

        for s in strings:
            print (f"match found for {s}")