如果不是单词2中的Python和lin

2024-09-28 05:27:30 发布

您现在位置:Python中文网/ 问答频道 /正文

很抱歉在这里是个无名小卒,因为我是个新手

我一直在尝试写一个代码,可以找到一行中的某个单词,然后从第二个单词列表中进行匹配,看看第二个单词是否存在于同一行中。 只有当第一个单词不同时存在时才打印行;下面是代码片段和示例

keywords =("a","b","c","d")
keywords2 = ("e","f","g")
a = ("a  is a ", "a is not e","b is b", "b is not f")
for key2 in keywords2:              
    for key in keywords:                

        for line in a:

                if key2 not in line:
                    if key in line:

                        print(key+" Found in --> ")
                        print      (line)

需要的输出是

^{pr2}$

当我们有

a Found in --> 
a  is a 
b Found in --> 
b is b
b Found in --> 
b is not f
a Found in --> 
a  is a 
a Found in --> 
a is not e
b Found in --> 
b is b
a Found in --> 
a  is a 
a Found in --> 
a is not e
b Found in --> 
b is b
b Found in --> 
b is not f

我尝试过几种方法来实现循环,但是没有用


Tags: key代码inforifislinenot
3条回答

@joon用你问题的风格来回答;以下是一些其他的想法:

首先遍历,因为代码的工作方式应该类似于问题“我应该打印这行吗?”对于每一行。在

keywords = ("a","b","c","d")
keywords2 = ("e","f","g")

a = ("a  is a ", "a is not e", "b is b", "b is not f")

for line in a:
    for k in keywords:
        if k in line:
            for k2 in keywords2:
                if k2 in line:
                    break
            else:
                print(line)

联机尝试:https://repl.it/CgW8

For/else是一个Python思想,但有点奇怪——如果循环正常结束,else:将运行并打印行。如果循环中断,else:将不会运行,也不会打印该行。在

但是一个更惯用的答案是使用any(),如果列表中的任何内容为真,则返回True,否则返回False:

^{pr2}$

联机尝试:https://repl.it/CgW9

如果我理解正确,您只希望“行”的值来自keywords,而不是{}。在这种情况下,只需:

for line in a:
    if [x for x in keywords if x in line] and not [x for x in keywords2 if x in line]:
        print line

[x for x in keywords if x in line]循环遍历keywords中的所有项,如果它们在line中,则将它们添加到列表中。在

[x for x in keywords2 if x in line]循环遍历keywords2中的所有项,如果它们在line中,则将它们添加到列表中。在

空列表被视为False,您希望keywords列表不为空,keywords2列表为空。在

这对你有用吗?在

keywords =("a","b","c","d")
keywords2 = ("e","f","g")
lines = ("a  is a ", "a is not e","b is b", "b is not f")

for keyword in keywords:
    for line in lines:
        if keyword in line:
            keyword2_exist = False
            for keyword2 in keywords2:
                if keyword2 in line:
                    keyword2_exist = True

            if not keyword2_exist:
                print(line)

相关问题 更多 >

    热门问题