簡體   English   中英

在文本文件中查找換行符

[英]finding new line characters in a text file

我有一個任務,涉及創建一個尾部來查找文件中的最后K行。 我們已經為此提供了緩沖區。 現在,我正在嘗試編寫小東西並在文件中搜索"\\n"字符。 我遇到了一些問題。 python我的代碼向后吐出6 ,在python30 雖然文本文件比WAY更多。 有人可以告訴我為什么這不符合我的意願嗎?

def new():
    try:
        f = open("test.txt", "r")
        count = 0
        for i in f:
            if i == "\n":
                count = count + 1
        return count
        f.close()
    except(FileNotFoundError):
        print("No file")      

我想做的是使用seek在文件中向后搜索,並經常搜索新行字符,但這似乎對我沒有用。

for i in f:沒有做你認為的事情。 文件的默認迭代器為您提供lines ,而不是characters 所以你說“整條生產線是否僅僅是回報?”

if i[-1] == "\\n":請嘗試改為if i[-1] == "\\n":因為這表示“該行中的最后一個字符是換行符嗎?”

您可能會注意到這很簡單,因為每條“線”都以換行符結束,所以簡單地計算線就足夠了。


如果你想遍歷各個角色,我會這樣做:

for line in file:
    for char in line:
        dostuff()

如果變量不符合您的想法,那么將變量命名為您認為的變量也將有助於排除故障。


repl.it上的示例 變量被命名為linechar只是為了顯示它們是什么,它們可以像bananahenry一樣容易,盡管那時發生的事情還不太清楚。 raven為了這個例子的目的模擬一個文件。

一個更簡單的方法是

  • 使用Python的內置功能將文件拆分為行列表
  • 從該列表的最后K個元素創建您的尾部

如果將整個文件保留在一個數組中是一個問題,你可以逐行讀取文件,但只保留最后讀取的K行,這樣當你到達文件末尾時,你就得到了你想要的尾部。

為什么不簡化邏輯並使用Python內置?

def new(): # not a good function name!
    try:
        with open('data1.txt') as f:
            return f.read().count('\n')
    except FileNotFoundError:
        print ("No file")

暫無
暫無

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

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