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}")