Python在输出中找到整行

时间:2018-04-17 09:09:41

标签: python string python-3.x

我正在运行一个命令,其中输出是一个数字列表:

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在该列表中。

如何检查列表中是否有数字(在它自己的行中)?

3 个答案:

答案 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')):
    ...