繁体   English   中英

比较字符串与Python3中的多个字符串

[英]Compare string to multiple strings in Python3

我想知道变量中是否没有文本字符串。 然后比较是否还有另一个文本字符串。 变量results可能包含以下内容:是,否或? 我有以下代码:

internet = result1
vpn = result2
zetas = result3

values = [internet, vpn, zetas]

    if any(v !== "?" for v in values):
        print("No exist ?")
    if any(v == "no" for v in values):
        print("Exist a NO")
    else:
        print("Good")

特别是看到最优雅的方式。

您可以检查value in list value not in listvalue in list value not in list

values = (internet, vpn, zetas)

if "?" not in values:
    print("No exist ?")
if "no"  in values:
    print("Exist a NO")
else:
    print("Good")

首先,最好传递生成器表达式而不是循环馈送列表。

其次,尽管可以有很多方法,但是一个好的方法就是:

values = (internet, vpn, zetas)
if "?" in (v for v in values):
  print("No exist ?")

生成器表达式可以节省内存和时间,这对于手头的脚本并不重要,但对更大的数据块很有用。

我检查了您关于倒逗号中问号的查询是否可以使用数组比较[x in B for x in A]逃避检测

#I assigned values to your variables to test
result1 ='?'
result2="no"
result3 = "yes"

internet = result1
vpn = result2
zetas = result3

#created an array with above values in it both in string format and as variable values (appended a number just for test)
A = [internet, 'no', '?', 'yes', vpn, zetas, '8']

#array of sample strings
B = ['?', 'no', 'yes']

exists = [x in B for x in A]
print (exists)

当比较结果打印出来时,它给出:[True,True,True,True,True,True,False]。 但是,如果还有其他引号,例如'"?"' ,则此标记将打印为False。 (单引号中的项目与双引号中的项目相同。)

请随意运行/重新分配值/测试等。 (可能不是您要寻找的答案,但希望能对您有所帮助)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM