Py学习  »  Python

如何在python中设置if语句以使用条件数组作为输入

Charlie Crown • 6 年前 • 1817 次点击  

首先我检查一个给定的条件 IF 语句。如果是 True ,我需要扫描所有文件以查找单个关键字。如果不是 ,我需要扫描所有文件以查找已提供的一组关键字。

对于我的简单工作示例,与其扫描目录中的文件名,不如直接搜索字符串来查找关键字。

test1 = "NotKeyWord"
password = "password"
password1 = "password1"
password2 = "password2"
password3 = "password3"

if test1.lower() == "keyword":
    condition = password
else:
    condition = [password1, password2, password3]

f = "password1_password2_password3_jibberish_E=mc2"
if condition in f:
    print("Problem solved")

如果keyword=“keyword”即是单数,则此代码有效。好的。但是,我想这样做,如果是另一种情况,这需要知道几个关键字来获取正确的文件,我不需要显式地写出所有的单词。

为了我的目的我可以写

if password1 in f and password2 in f and password3 in f:
    print("problem solved")

但我正在寻找一个pythonic方法,它很可能是通用的,能够处理长度未知的关键字数组,因此不能硬编码。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/45456
文章 [ 4 ]  |  最新文章 6 年前
Jack Taylor
Reply   •   1 楼
Jack Taylor    6 年前

为了方便您自己,我会列出这两种情况下的密码列表。如果test1是关键字,那么它就是一个列表。

if test1.lower() == "keyword":
    passwords = [password]
else:
    passwords = [password1, password2, password3]

然后可以使用python的内置 all function 用一个 generator expression 第二个条件。

f = "password1_password2_password3_jibberish_E=mc2"
if all(pw in f for pw in passwords):
    print("Problem solved")
user2468968
Reply   •   2 楼
user2468968    6 年前

一种方法是:

if [x for x in condition if x in f]:
   ...
John Gordon
Reply   •   3 楼
John Gordon    6 年前

制作 condition 始终是一个列表,即使它只有一个项目:

if test1.lower() == "keyword":
    condition = [password]
else:
    condition = [password1, password2, password3]

然后使用 all() 函数检查中的所有元素 条件 出现在F:

if all(c in f for c in condition):
    print("problem solved")

这将起作用 条件 有一个元素,或者十个,或者一百个。

NebiyouTen
Reply   •   4 楼
NebiyouTen    6 年前

这应该管用,

if all ( c in f for c in condition ):
    print("problem solved")