我正在运行一个命令,其中输出是一个数字列表:
output = subprocess.run(['command'], stdout = subprocess.PIPE)
输出(output.stdout.decode('utf-8')
)是这样的:
1
534
89
4
57
9
我需要查找特定号码是否不在该列表中。问题是,如果我使用if num not in list:
搜索num = 3,我将得到真实,因为数字534在该列表中。
如何检查列表中是否有数字(在它自己的行中)?
答案 0 :(得分:0)
只需拆分您的列表并检查" word"或者对于整数,使用set comprehension去除重复:
if 3 in {int(x) for x in output.stdout.decode('utf-8').split()}:
split
if "3" in output.stdout.decode('utf-8').split():
(如果整数可以从0开始,则效果较差:03
)
答案 1 :(得分:0)
刚刚加入Jean-Francois的回答。 Split()默认情况下会在白色空格上拆分,但由于你需要在行上拆分,我建议拆分('\ n')来进行拆分,这样代码就会更有弹性
答案 2 :(得分:0)
您也可以使用re
模块:
import re
lookup=3
pattern = re.compile('\b{}\b'.format(lookup))
if pattern.search(output.stdout.decode('utf-8')):
...