在Python中使用in运算符的if语句中,字符串被销毁

在Python中使用in运算符的if语句中,字符串被销毁,python,string,if-statement,python-3.4,in-operator,Python,String,If Statement,Python 3.4,In Operator,我对以下Python代码有以下问题: katalog = open(r"Katalog.txt", 'r') katentrylist = open(r"katentrylist.txt", 'r') for line in katalog: for element in katentrylist: if element in line: print(element) if clean6.search(element)

我对以下Python代码有以下问题:

katalog = open(r"Katalog.txt", 'r')
katentrylist = open(r"katentrylist.txt", 'r')

for line in katalog:

    for element in katentrylist:
        if element in line:
            print(element)
            if clean6.search(element) != None:
                element = clean6.sub('', element)
            if clean7.search(element) != None:
                element = clean7.sub('', element)
            if clean8.search(element) != None:
                element = clean8.sub('', element)
            if clean9.search(element) != None:
                element = clean9.sub('', element)
            elementtxt = element + '.txt'
            with open(elementtxt, 'a') as d:
                d.writelines(line)
                d.close()

    elementtxt = ''
    check = ''
当我尝试执行print(element)语句时,变量元素在使用in运算符的if语句之后为空。但是,我可以执行line变量的print语句或打印随机字符串。如果我使用任何其他为true的If语句,而不使用in运算符,那么我也可以打印元素varible

是否有人对这种行为有解释,并能给我一个为什么会发生这种情况的提示


非常感谢

乍一看,
katentrylist
不是一个列表,把它当作一个列表来对待是危险的。IIRC,您只能在文件对象上迭代一次,然后它就会耗尽。因此,将
for元素放入katentrylist
中的另一个
for
循环中,意味着您只能在第一次获得预期的元素。谢谢您的回答。当我使用列表而不是katentrylist文件时,也会发生这种行为。在调试期间,我刚刚更改了它。嗯,什么类型是
clean6
re.compile
返回的模式?还有什么吗?我知道是这样的模式:“code”clean6=compile('\\n')。嗯,我看不出这里的代码有任何错误会导致
print(element)
失败。可能有必要撰写一份报告,以便潜在的回答者能够在他们自己的机器上复制这种行为。