如何找到某些单词并在python中打印该行?

时间:2018-04-10 17:57:07

标签: python

我试图只打印具有我需要的特定字符串的行。

我这样做但我无法弄清楚出了什么问题:

def find(text):
    fisier = file('catastrofa.txt')
    for line in fisier:
        if (text in line):
            print(line)

def main():

    find("David")

main()

4 个答案:

答案 0 :(得分:3)

使用open(..)打开文件,然后可以遍历文件处理程序(迭代文件处理程序将在逐行迭代文件时尚):

def find(text):
    with open('catastrofa.txt') as fisier:
        for line in fisier:
            if (text in line):
                print(line)

def main():
    find("David")

main()

默认情况下,您打开文件的模式为'r',因此您读取文件(您无法写入文件),并将其作为文本阅读(不是二进制)。

请注意,文件的路径是 relative 来自当前目录(可以是python文件的目录,但有时它不是< / em>的)。

答案 1 :(得分:1)

您可以使用open打开文件,并使用readlines方法逐行迭代

def find(text):
    fisier = open('catastrofa.txt')
    for line in fisier.readlines():
        if (text in line.strip()):
            print(line)
    fisier.close()

def main():
    find("David")

main()

您还可以使用with关键字的上下文管理器,保证在完成后关闭流,Willem Van Onsem已经演示了示例

答案 2 :(得分:0)

使用open(&#39; catastrofa.txt&#39;)代替文件(&#39; catastrofa.txt&#39;) 像这样:

def find(text):
    fisier = open('catastrofa.txt','r')
    for line in fisier:
        if (text in line):
            print(line)

def main():

    find("David")

main()

答案 3 :(得分:0)

for line in fisier:

迭代文件中的行而不删除行结尾(通常是行返回),所以:

print(line)

将打印该行和一个空行,因此最好写一下:

with open('catastrofa.txt') as fisier:
  for line in fisier:
    if text in line:
      print(line, end='')

以避免额外的行返回。