如果输入文件包含“”,则返回True在每一行。否则返回fals

2024-03-29 09:24:11 发布

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

我是编程新手,我正在尝试编写一个接受文件名作为参数的函数。此函数应该打开文件,读取它,如果文件包含“”,则返回True在文本文件的每一行中。 输入文件可以一次或多次具有指定字符。 到目前为止,我的情况是:

def char_finder(filename):
    inputFile = open(filename, "r")
    for line in inputFile:
        if '?' in line:
            return True
        else:
            return False
    inputFile.close

print(char_finder("inputfile.txt"))

我花了几个小时寻找每一个可能的类似的解决方案,但没有结果。你知道吗


Tags: 文件函数intrue参数returnfinder文件名
2条回答

可以使用all()确保所有行都通过了条件。例如:

def char_finder(filename, char):  # lets make it a bit more universal
    with open(filename, "r") as f:
        return all(char in line for line in f)

print(char_finder("inputfile.txt", "?"))

您面临的主要问题是,您将在第一次迭代中返回。return将结束函数的执行。你知道吗

如果要检查是否所有行都包含“?”,则检查应该是在未找到“?”时返回的内容。如果您设法耗尽您的迭代,那么所有的行都有'?'你只需返回真值。你知道吗

def char_finder(filename):
    with open(filename, "r") as inputFile:
        for line in inputFile:
            if '?' not in line: 
                return False
    return True

此外,请注意,文件的读取现在使用的是上下文管理器,这在这里是一种更干净的方法。你知道吗

最后,要完全重构它,我们可以使用all函数,它将遍历每一行,一旦发现不匹配的条件,它就会短路。这几乎就是上面显示的,但所有的工作都是为我们做的:

def char_finder(filename):
    with open(filename, "r") as inputFile:
        return all('?' in line for line in inputFile)

相关问题 更多 >