簡體   English   中英

定義一個函數來計算文件中的行數,包含某個子字符串

[英]Defining a function to count the number of lines in a file, containing a certain substring

我對 Python 有點陌生。 我正在嘗試定義一個函數,該函數可以計算包含特定子字符串的文件中的行數。 我還想將具有多個子字符串值的行計算為 1。

這是我的代碼:

def CLT(filename):
    with open(filename,'r') as f:
        pattern='ing'
        count=a=0
        k=f.readlines()
        for line in k:
            if pattern in k[a:]:
                count += 1
        return count

print( CLT('random_file.txt') )

假設我的文件有 25 個實例,其中出現字符串 'str' 但它有 2 行,其中 2 個 'str' 出現在同一行。 所以這個問題的理想輸出應該是 23。

但它返回 0 作為行數。 我也認識到我的代碼沒有執行將具有多個子字符串的行計算為 1 個計數的部分。 我可以做些什么來改進此代碼?

這是您可能想嘗試的代碼,

def CLT(filename):
    with open(filename, 'r') as f:
        pattern = 'ing'
        count = 0
        for line in f:
            if pattern in line:
                count += 1
        return count


print(CLT('random_file.txt'))

希望這對你有幫助!

您的代碼中有一個小錯誤:

if pattern in k[a:]:

應該:

if pattern in line[a:]:

看起來您正在定位自己以使用a來跟蹤您何時已經在該行中找到該字符串並且您現在正在尋找其他事件,但如果沒有,您應該將其刪除,因為它使邏輯復雜化.

否則,如果您使用a來顯示您已經在該行中找到該字符串出現的位置的索引,則需要確保再次開始查看索引a + 1以便您不會再次找到相同的出現並且當您添加一個循環來檢查同一行中的其他事件時,再次並以無限循環結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM