Python 在檔案中查詢字串

Syed Moiz Haider 2023年1月30日
  1. 在 Python 中使用檔案 readlines() 方法查詢檔案中的字串
  2. 在 Python 中使用檔案 read() 方法搜尋檔案中的字串
  3. 在 Python 中使用 find 方法搜尋檔案中的字串
  4. 在 Python 中使用 mmap 模組搜尋檔案中的字串
Python 在檔案中查詢字串

本教程介紹瞭如何在 Python 中查詢文字檔案中的特定字串。

在 Python 中使用檔案 readlines() 方法查詢檔案中的字串

Pyton 檔案 readlines() 方法將檔案內容按新行分割成一個列表返回。我們可以使用 for 迴圈對列表進行遍歷,並在每次迭代中使用 in 操作符檢查字串是否在行中。

如果在行中找到了字串,則返回 True 並中斷迴圈。如果在迭代所有行後沒有找到字串,它最終返回 False

下面給出了這種方法的示例程式碼。

file = open("temp.txt", "w")
file.write("blabla is nothing.")
file.close()


def check_string():
    with open("temp.txt") as temp_f:
        datafile = temp_f.readlines()
    for line in datafile:
        if "blabla" in line:
            return True  # The string is found
    return False  # The string does not exist in the file


if check_string():
    print("True")
else:
    print("False")

輸出:

True

在 Python 中使用檔案 read() 方法搜尋檔案中的字串

檔案 read() 方法將檔案的內容作為一個完整的字串返回。然後我們可以使用 in 操作符來檢查該字串是否在返回的字串中。

下面給出一個示例程式碼。

file = open("temp.txt", "w")
file.write("blabla is nothing.")
file.close()


with open("temp.txt") as f:
    if "blabla" in f.read():
        print("True")

輸出:

True

在 Python 中使用 find 方法搜尋檔案中的字串

一個簡單的 find 方法可以與 read() 方法一起使用,以找到檔案中的字串。find 方法被傳遞給所需的字串。如果找到了字串,它返回 0,如果沒有找到,則返回 -1

下面給出一個示例程式碼。

file = open("temp.txt", "w")
file.write("blabla is nothing.")
file.close()

print(open("temp.txt", "r").read().find("blablAa"))

輸出:

-1

在 Python 中使用 mmap 模組搜尋檔案中的字串

mmap 模組也可以用來在 Python 中查詢檔案中的字串,如果檔案大小比較大,可以提高效能。mmap.mmap() 方法在 Python 2 中建立了一個類似字串的物件,它只檢查隱含的檔案,不讀取整個檔案。

下面給出一個 Python 2 中的示例程式碼。

# python 2

import mmap

file = open("temp.txt", "w")
file.write("blabla is nothing.")
file.close()

with open("temp.txt") as f:
    s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
    if s.find("blabla") != -1:
        print("True")

輸出:

True

然而,在 Python 3 及以上版本中,mmap 並不像字串物件一樣,而是建立一個 bytearray 物件。所以 find 方法是尋找位元組而不是字串。

下面給出一個示例程式碼。

import mmap

file = open("temp.txt", "w")
file.write("blabla is nothing.")
file.close()

with open("temp.txt") as f:
    s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
    if s.find(b"blabla") != -1:
        print("True")

輸出:

True
Syed Moiz Haider avatar Syed Moiz Haider avatar

Syed Moiz is an experienced and versatile technical content creator. He is a computer scientist by profession. Having a sound grip on technical areas of programming languages, he is actively contributing to solving programming problems and training fledglings.

LinkedIn

相關文章 - Python String

相關文章 - Python File