Nhận chỉ mục của dòng trong tệp Python

Trong bài viết này, chúng ta sẽ thảo luận về cách tìm kiếm một hoặc nhiều chuỗi trong một tệp và nhận tất cả các dòng phù hợp cùng với số dòng của chúng

Kiểm tra nếu một chuỗi tồn tại trong một tập tin

Để kiểm tra xem một chuỗi đã cho có tồn tại trong tệp hay không, chúng tôi đã tạo một hàm,

def check_if_string_in_file(file_name, string_to_search):
    """ Check if any line in the file contains given string """
    # Open the file in read only mode
    with open(file_name, 'r') as read_obj:
        # Read all lines in the file one by one
        for line in read_obj:
            # For each line, check if line contains the string
            if string_to_search in line:
                return True
    return False

Nó chấp nhận một đường dẫn tệp và một chuỗi làm đối số. Sau đó lặp lại từng dòng trong tệp một và kiểm tra từng dòng xem nó có chứa chuỗi đã cho hay không. Nếu dòng chứa chuỗi đã cho, thì trả về True. Trong khi nếu không có dòng nào trong tệp chứa chuỗi đã cho, thì nó sẽ trả về Sai

Nội dung của tệp 'mẫu. txt' là,

quảng cáo

Hello this is a sample file
It contains sample text
Dummy Line A
Dummy Line B
Dummy Line C
This is the end of file

Hãy kiểm tra xem tệp này có chứa chuỗi 'là' hay không,

# Check if string 'is' is found in file 'sample.txt'
if check_if_string_in_file('sample.txt', 'is'):
    print('Yes, string found in file')
else:
    print('String not found in file')

đầu ra

Đọc thêm

  • con trăn. Đọc một tệp theo thứ tự đảo ngược từng dòng
  • con trăn. Đọc CSV thành danh sách các danh sách hoặc bộ dữ liệu hoặc…
  • Làm cách nào để nối văn bản hoặc dòng vào tệp trong python?
  • Kiểm tra ký tự đầu tiên hoặc cuối cùng của chuỗi trong python

Yes, string found in file

Vì tệp chứa 'is', do đó hàm check_if_string_in_file() trả về True

Ở đây chúng ta biết tệp đó có chứa chuỗi đã cho hay không. Nhưng điều gì sẽ xảy ra nếu chúng ta muốn biết tất cả các lần xuất hiện chính xác của một chuỗi trong tệp như dòng và số dòng. Hãy xem làm thế nào để làm điều đó,

Tìm kiếm một chuỗi trong tệp và nhận tất cả các dòng chứa chuỗi cùng với số dòng

chúng tôi đã tạo một hàm, để lấy tất cả các dòng và số dòng chứa chuỗi đã cho,

def search_string_in_file(file_name, string_to_search):
    """Search for the given string in file and return lines containing that string,
    along with line numbers"""
    line_number = 0
    list_of_results = []
    # Open the file in read only mode
    with open(file_name, 'r') as read_obj:
        # Read all lines in the file one by one
        for line in read_obj:
            # For each line, check if line contains the string
            line_number += 1
            if string_to_search in line:
                # If yes, then add the line number & line as a tuple in the list
                list_of_results.append((line_number, line.rstrip()))

    # Return list of tuples containing line numbers and lines where string is found
    return list_of_results

Nó chấp nhận một đường dẫn tệp và một chuỗi làm đối số. Cuối cùng, nó trả về một danh sách các bộ, trong đó mỗi bộ chứa số dòng và dòng, bao gồm chuỗi đã cho

Nó đã hoạt động như thế nào?

Thuật toán như sau,

  • Chấp nhận đối số - đường dẫn tệp và chuỗi để tra cứu
  • Tạo một danh sách trống các bộ dữ liệu
  • Mở tệp tại đường dẫn đã cho ở chế độ chỉ đọc
  • Lặp lại từng dòng trong tệp một
    • Đối với mỗi dòng, hãy kiểm tra xem nó có chứa chuỗi đã cho hay không
      • Nếu dòng chứa chuỗi đã cho,
        • Tạo một bộ số dòng & dòng và thêm nó vào danh sách các bộ dữ liệu
      • Trả về danh sách các bộ dữ liệu i. e. , các dòng phù hợp cùng với số dòng

Giả sử chúng ta có một tệp 'mẫu. txt’ và nội dung của nó là,

Hello this is a sample file
It contains sample text
Dummy Line A
Dummy Line B
Dummy Line C
This is the end of file

Hãy lấy tất cả các dòng cùng với số dòng có chứa từ 'is',

matched_lines = search_string_in_file('sample.txt', 'is')

print('Total Matched lines : ', len(matched_lines))
for elem in matched_lines:
    print('Line Number = ', elem[0], ' :: Line = ', elem[1])

đầu ra

Total Matched lines :  2
Line Number =  1  :: Line =  Hello this is a sample file
Line Number =  6  :: Line =  This is the end of file

Tổng cộng, có hai dòng, bao gồm chuỗi 'is' và hàm này trả về các dòng đó cùng với số dòng của chúng. Bây giờ, giả sử thay vì tìm kiếm một chuỗi, chúng tôi muốn tìm kiếm nhiều chuỗi trong một tệp. Hãy xem làm thế nào để làm điều đó,

Tìm kiếm nhiều chuỗi trong một tệp và nhận các dòng chứa chuỗi cùng với số dòng

Để tìm kiếm nhiều chuỗi trong một tệp, chúng ta không thể sử dụng hàm đã tạo ở trên vì hàm đó sẽ mở và đóng tệp cho từng chuỗi. Do đó, chúng tôi đã tạo một chức năng riêng biệt, chức năng này sẽ mở một tệp một lần và sau đó tìm kiếm các dòng trong tệp chứa bất kỳ chuỗi i đã cho nào. e

Bạn có thể lập chỉ mục các dòng trong Python không?

Bạn có thể sử dụng số chỉ mục làm số dòng để trích xuất một tập hợp các dòng từ nó . Đây là cách đơn giản nhất để đọc một dòng cụ thể từ một tệp trong Python.

Làm cách nào để trích xuất các phần cụ thể của tệp văn bản bằng Python?

Cách trích xuất các phần cụ thể của tệp văn bản bằng Python .
Đảm bảo bạn đang sử dụng Python 3
Đọc dữ liệu từ tệp văn bản
Sử dụng "với mở"
Đọc các tệp văn bản theo từng dòng
Lưu trữ dữ liệu văn bản trong một biến
Tìm kiếm văn bản cho một chuỗi con
Kết hợp các biểu thức chính quy
Để tất cả chúng cùng nhau