逐行读取文件并传递给方法

2024-09-29 00:22:21 发布

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

我有一个文本文件,大约有10个句子。你知道吗

My Name is Kerry.
I am a female.
My pet is a cat.
It's name is Ronald.
I hate rats.

我想做的是从这个文本文件中读取一个句子,并将它传递给我编写的fineSearch方法。你知道吗

def fineSearch(wd):
    for line in wd:
        for word in line.strip().split():
            if word.endswith(('ts.','ld')):
                print word

主要

ws = linebylineread('tx.txt')
fineSearch("It's name is Ronald.") # THIS IS FOR DEMO PURPOSE ONLY.

NOTE: I WANT TO READ JUST ONE LINE AT A TIME FROM THE TX.TXT FILE AND PASS IT TO THE METHOD THAT I HAVE WRITTEN.

NOTE: I HAVE NOTICED THAT THE CODE WORKS WHEN I PASS THE WHOLE CHUNK OF TEXT AND NOT A LINE.

当我传递fineSearch(ws)时,它工作,但它读取整个文件,当我打印文本时,它显示为;My Name is Kerry.\n I am a female.\n My pet is a cat\n等。我只想能够发送一行到我编写的方法。你知道吗


Tags: thenameismyitamfemalecat
1条回答
网友
1楼 · 发布于 2024-09-29 00:22:21

如果需要代码在一行上工作,则需要按如下所示更改fineSearch(...)函数:

def fineSearch(wd):
    for word in wd.strip().split():
            if word.endswith(('ts.','ld.')): # test for ld. at end
                print word

然后,您可以使用以下代码逐行遍历文件。你知道吗

>>> with open('testFile.txt', 'r') as f:
        for line in f:
            fineSearch(line)


rats. # Output. If you wanted Ronald. too, you need to change `ld` in the code to `ld.`

您的初始代码似乎工作在一个行列表上,类似于readlines(...)提供的,但是readlines(...)将整个文件读入内存,而您似乎希望逐行遍历文件。你知道吗

相关问题 更多 >