Python 将x.split()[field]与一些值进行比较

Python 将x.split()[field]与一些值进行比较,python,Python,我有以下代码: with open('/home/adiel/log', 'r') as f: for line in [[x.split()[3], x.split()[4], x.split()[5], x.split()[6]] for x in f]: print(line) 它工作正常,请为我打印以下值: ['172.18.0.124', '172.18.0.5', '3306', '39064'] ['172.18.0.124', '172.18.0.5'

我有以下代码:

with open('/home/adiel/log', 'r') as f:

    for line in [[x.split()[3], x.split()[4], x.split()[5], x.split()[6]] for x in f]:
        print(line)
它工作正常,请为我打印以下值:

['172.18.0.124', '172.18.0.5', '3306', '39064']
['172.18.0.124', '172.18.0.5', '3306', '62717']
['172.18.0.5', '172.18.0.124', '52909', '3306']
['172.18.0.5', '172.18.0.124', '13989', '3306']
但我想将
x.split()[5]
与一些值(如
443
65535
)进行比较,只有当它们匹配时,才打印行。 我怎么做这个?
Thank's

您可以使用拆分创建一个生成器,然后打印过滤后的值:

with open('/home/adiel/log', 'r') as f:
    iter_lines = (x.split() for x in f)
    for line in (x[3:7] for x in iter_lines if x[5] in {'443', '65535'}):
        print(line)
或者使用for循环
split()
行并在满足条件时打印:

with open('/home/adiel/log', 'r') as f:
    for line in f:
        line = line.split()
        if line[5] in {'443', '65535'}:
            print(line[3:7])

嗯哼<代码>[x.split()[3],x.split()[4],x.split()[5],x.split()[6]是
x.split()[3:7]
,否?
如果行[2]==:打印(行)
对不起,我是初学者,忘记了,但是,完成了:对于[x.split()[3:7]]中的行,对于f中的x]:我只想将每行中的字段5与443或65535进行比较,并且仅当它与这些值匹配时,才打印这些行。为什么不通过生成整个表达式<代码>用于行输入(x[3:7]用于x-in-iter\u行,如果x[5]用于查找值谢谢大家!Moe的解决方案非常适合我。