Python tìm dòng chứa chuỗi

Ở đây chúng tôi đã sử dụng phương thức readlines() để đọc dòng tệp văn bản một cách khôn ngoan. Chức năng liệt kê đã được sử dụng để ánh xạ các dòng tới số dòng tương ứng của chúng

Tìm nhiều lần lặp lại của cùng một chuỗi trong một tệp văn bản

Xem xét cùng một tệp văn bản được đề cập ở trên nếu chúng tôi muốn tìm tất cả các lần lặp lại của chuỗi (từ khóa) “Codespeedy” từ tệp văn bản, chúng tôi có thể thực hiện các thay đổi nhỏ ở trên hàm để lấy số dòng của các dòng chứa từ khóa/

def word_search(key, filename):
    with open(filename) as file:  # opening the file using with to ensure it closes after the block of code is executed
        lines = file.readlines()  # reading the lines of the files in order
    for number, line in enumerate(lines, 1):  # using enumerate to map each line of the file to it's line_number
        if key in line:  # searching for the keyword in file
            print(f'{key} is in the line {number}')  # returning the line number if the keyword

keyword = input("Enter the string/keyword you wish to search:")  # user input of the keyword
word_search(keyword,'Example.txt')

đầu ra

Enter the string/keyword you wish to search:
Codespeedy
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5

Tìm một số từ khóa/chuỗi khác nhau trong một tệp văn bản

Xem xét cùng một tệp văn bản được đề cập ở trên nếu chúng tôi muốn tìm một số từ khóa/chuỗi trong tệp văn bản, chúng tôi có thể sử dụng cùng chức năng được đề cập ở trên để lấy số dòng của các dòng có chứa các từ khóa/chuỗi này

def word_search(key, filename):
    with open(filename) as file:  # opening the file using with to ensure it closes after the block of code is executed
        lines = file.readlines()  # reading the lines of the files in order
    for number, line in enumerate(lines, 1):  # using enumerate to map each line of the file to it's line_number
        if key in line:  # searching for the keyword in file
            print(f'{key} is in the line {number}')  # returning the line number

strings = input("Enter all the strings use to wish to search separated by space:\n")
string_list = list(strings.split())
for item in string_list:
    word_search(item,'Example.txt')

đầu ra

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3

Trong chương trình này, phương thức split() đã được sử dụng để phân tách chuỗi đầu vào được phân tách bằng dấu cách thành các từ riêng lẻ

Nếu bạn là người mới lập trình hoặc đến từ một ngôn ngữ lập trình không phải Python, bạn có thể đang tìm kiếm cách tốt nhất để kiểm tra xem một chuỗi có chứa một chuỗi khác hay không trong Python

Việc xác định các chuỗi con như vậy sẽ hữu ích khi bạn đang làm việc với nội dung văn bản từ một tệp hoặc sau khi bạn nhận được đầu vào của người dùng. Bạn có thể muốn thực hiện các hành động khác nhau trong chương trình của mình tùy thuộc vào việc có chuỗi con hay không

Trong hướng dẫn này, bạn sẽ tập trung vào cách Pythonic nhất để giải quyết tác vụ này, sử dụng toán tử thành viên

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1. Ngoài ra, bạn sẽ tìm hiểu cách xác định các phương thức chuỗi phù hợp cho các trường hợp sử dụng có liên quan nhưng khác nhau

Cuối cùng, bạn cũng sẽ học cách tìm chuỗi con trong cột gấu trúc. Điều này hữu ích nếu bạn cần tìm kiếm dữ liệu từ tệp CSV. Bạn có thể sử dụng phương pháp mà bạn sẽ học trong phần tiếp theo, nhưng nếu bạn đang làm việc với dữ liệu dạng bảng, thì tốt nhất là tải dữ liệu vào DataFrame của gấu trúc và tìm kiếm các chuỗi con trong pandas

Tải xuống miễn phí. Nhấp vào đây để tải xuống mã mẫu mà bạn sẽ sử dụng để kiểm tra xem một chuỗi có chứa chuỗi con không

Cách xác nhận rằng một chuỗi Python chứa một chuỗi khác

Nếu bạn cần kiểm tra xem một chuỗi có chứa chuỗi con hay không, hãy sử dụng toán tử thành viên của Python

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1. Trong Python, đây là cách được đề xuất để xác nhận sự tồn tại của chuỗi con trong chuỗi

>>>

>>> raw_file_content = """Hi there and welcome.
.. This is a special hidden file with a SECRET secret.
.. I don't want to tell you The Secret,
.. but I do want to secretly tell you that I have one."""

>>> "secret" in raw_file_content
True

Toán tử thành viên

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1 cung cấp cho bạn một cách nhanh chóng và dễ đọc để kiểm tra xem một chuỗi con có tồn tại trong một chuỗi hay không. Bạn có thể nhận thấy rằng dòng mã gần giống như tiếng Anh

Ghi chú. Nếu bạn muốn kiểm tra xem chuỗi con có nằm trong chuỗi hay không thì bạn có thể sử dụng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
4

>>>

>>> "secret" not in raw_file_content
False

Bởi vì chuỗi con

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 có mặt trong
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
6, nên toán tử
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
4 trả về
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
8

Khi bạn sử dụng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1, biểu thức sẽ trả về giá trị Boolean

  • Enter the string/keyword you wish to search:
    Codespeedy
    Codespeedy is in the line 2
    Codespeedy is in the line 3
    Codespeedy is in the line 5
    50 nếu Python tìm thấy chuỗi con
  • >>> if "secret" in raw_file_content:
    ..    print("Found!")
    ...
    Found!
    
    8 nếu Python không tìm thấy chuỗi con

Bạn có thể sử dụng cú pháp trực quan này trong các câu lệnh có điều kiện để đưa ra quyết định trong mã của mình

>>>

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!

Trong đoạn mã này, bạn sử dụng toán tử thành viên để kiểm tra xem

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 có phải là chuỗi con của
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
6 không. Nếu đúng như vậy, thì bạn sẽ in một tin nhắn đến thiết bị đầu cuối. Mọi mã thụt lề sẽ chỉ thực thi nếu chuỗi Python mà bạn đang kiểm tra chứa chuỗi con mà bạn cung cấp

Ghi chú. Python coi các chuỗi rỗng luôn là một chuỗi con của bất kỳ chuỗi nào khác, vì vậy việc kiểm tra chuỗi rỗng trong một chuỗi sẽ trả về

Enter the string/keyword you wish to search:
Codespeedy
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
50

>>>

Enter the string/keyword you wish to search:
Codespeedy
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
5

Điều này có thể gây ngạc nhiên vì Python coi các chuỗi rỗng là sai, nhưng đó là một trường hợp cạnh hữu ích cần ghi nhớ

Toán tử thành viên

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1 là người bạn tốt nhất của bạn nếu bạn chỉ cần kiểm tra xem một chuỗi Python có chứa chuỗi con hay không

Tuy nhiên, nếu bạn muốn biết thêm về chuỗi con thì sao?

Python đã tìm thấy sự cố nào trong số này?

Loại bỏ các quảng cáo

Tổng quát hóa séc của bạn bằng cách loại bỏ phân biệt chữ hoa chữ thường

Chuỗi Python phân biệt chữ hoa chữ thường. Nếu chuỗi con mà bạn cung cấp sử dụng cách viết hoa khác với cùng một từ trong văn bản của bạn, thì Python sẽ không tìm thấy chuỗi đó. Ví dụ: nếu bạn kiểm tra từ viết thường

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 trên phiên bản viết hoa tiêu đề của văn bản gốc, kiểm tra toán tử thành viên sẽ trả về
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
8

>>>

def word_search(key, filename):
    with open(filename) as file:  # opening the file using with to ensure it closes after the block of code is executed
        lines = file.readlines()  # reading the lines of the files in order
    for number, line in enumerate(lines, 1):  # using enumerate to map each line of the file to it's line_number
        if key in line:  # searching for the keyword in file
            print(f'{key} is in the line {number}')  # returning the line number

strings = input("Enter all the strings use to wish to search separated by space:\n")
string_list = list(strings.split())
for item in string_list:
    word_search(item,'Example.txt')
6

Mặc dù thực tế là từ bí mật xuất hiện nhiều lần trong văn bản viết hoa tiêu đề

Enter the string/keyword you wish to search:
Codespeedy
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
59, nhưng nó không bao giờ xuất hiện ở tất cả các chữ thường. Đó là lý do tại sao kiểm tra mà bạn thực hiện với toán tử thành viên trả về
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
8. Python không thể tìm thấy chuỗi toàn chữ thường
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 trong văn bản được cung cấp

Con người có cách tiếp cận ngôn ngữ khác với máy tính. Đây là lý do tại sao bạn thường muốn bỏ qua cách viết hoa khi kiểm tra xem một chuỗi có chứa chuỗi con hay không trong Python

Bạn có thể khái quát hóa việc kiểm tra chuỗi con của mình bằng cách chuyển đổi toàn bộ văn bản đầu vào thành chữ thường

>>>

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
0

Chuyển đổi văn bản đầu vào của bạn thành chữ thường là một cách phổ biến để giải thích cho thực tế là con người nghĩ về các từ chỉ khác nhau về cách viết hoa là cùng một từ, trong khi máy tính thì không

Ghi chú. Đối với các ví dụ sau, bạn sẽ tiếp tục làm việc với

def word_search(key, filename):
    with open(filename) as file:  # opening the file using with to ensure it closes after the block of code is executed
        lines = file.readlines()  # reading the lines of the files in order
    for number, line in enumerate(lines, 1):  # using enumerate to map each line of the file to it's line_number
        if key in line:  # searching for the keyword in file
            print(f'{key} is in the line {number}')  # returning the line number

strings = input("Enter all the strings use to wish to search separated by space:\n")
string_list = list(strings.split())
for item in string_list:
    word_search(item,'Example.txt')
62, phiên bản chữ thường của văn bản của bạn

Nếu bạn làm việc với chuỗi ban đầu (

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
6) hoặc chuỗi trong tiêu đề (
Enter the string/keyword you wish to search:
Codespeedy
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
59), thì bạn sẽ nhận được kết quả khác vì chúng không ở dạng chữ thường. Vui lòng thử điều đó trong khi bạn làm việc với các ví dụ

Bây giờ bạn đã chuyển đổi chuỗi thành chữ thường để tránh các vấn đề ngoài ý muốn xuất phát từ phân biệt chữ hoa chữ thường, đã đến lúc đào sâu hơn và tìm hiểu thêm về chuỗi con

Tìm hiểu thêm về chuỗi con

Toán tử thành viên

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1 là một cách tuyệt vời để kiểm tra một cách mô tả xem có một chuỗi con trong một chuỗi hay không, nhưng nó không cung cấp cho bạn bất kỳ thông tin nào khác hơn thế. Nó hoàn hảo cho việc kiểm tra có điều kiện—nhưng nếu bạn cần biết thêm về các chuỗi con thì sao?

Python cung cấp nhiều phương thức chuỗi bổ sung cho phép bạn kiểm tra xem chuỗi đó chứa bao nhiêu chuỗi con đích, để tìm kiếm các chuỗi con theo các điều kiện phức tạp hoặc để xác định vị trí chỉ mục của chuỗi con trong văn bản của bạn

Trong phần này, bạn sẽ đề cập đến một số phương thức chuỗi bổ sung có thể giúp bạn tìm hiểu thêm về chuỗi con

Ghi chú. Bạn có thể đã thấy các phương pháp sau được sử dụng để kiểm tra xem một chuỗi có chứa chuỗi con hay không. Điều này là có thể — nhưng chúng không được sử dụng cho mục đích đó

Lập trình là một hoạt động sáng tạo và bạn luôn có thể tìm ra những cách khác nhau để hoàn thành cùng một nhiệm vụ. Tuy nhiên, để mã của bạn dễ đọc, tốt nhất bạn nên sử dụng các phương thức như chúng dự định trong ngôn ngữ mà bạn đang làm việc

Bằng cách sử dụng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1, bạn đã xác nhận rằng chuỗi chứa chuỗi con. Nhưng bạn không nhận được bất kỳ thông tin nào về vị trí của chuỗi con

Nếu bạn cần biết chuỗi con xuất hiện ở đâu trong chuỗi của mình, thì bạn có thể sử dụng

def word_search(key, filename):
    with open(filename) as file:  # opening the file using with to ensure it closes after the block of code is executed
        lines = file.readlines()  # reading the lines of the files in order
    for number, line in enumerate(lines, 1):  # using enumerate to map each line of the file to it's line_number
        if key in line:  # searching for the keyword in file
            print(f'{key} is in the line {number}')  # returning the line number

strings = input("Enter all the strings use to wish to search separated by space:\n")
string_list = list(strings.split())
for item in string_list:
    word_search(item,'Example.txt')
67 trên đối tượng chuỗi

>>>

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
7

Khi bạn gọi

def word_search(key, filename):
    with open(filename) as file:  # opening the file using with to ensure it closes after the block of code is executed
        lines = file.readlines()  # reading the lines of the files in order
    for number, line in enumerate(lines, 1):  # using enumerate to map each line of the file to it's line_number
        if key in line:  # searching for the keyword in file
            print(f'{key} is in the line {number}')  # returning the line number

strings = input("Enter all the strings use to wish to search separated by space:\n")
string_list = list(strings.split())
for item in string_list:
    word_search(item,'Example.txt')
67 trên chuỗi và chuyển chuỗi con đó làm đối số, bạn sẽ nhận được vị trí chỉ mục của ký tự đầu tiên trong lần xuất hiện đầu tiên của chuỗi con

Ghi chú. Nếu Python không thể tìm thấy chuỗi con, thì

def word_search(key, filename):
    with open(filename) as file:  # opening the file using with to ensure it closes after the block of code is executed
        lines = file.readlines()  # reading the lines of the files in order
    for number, line in enumerate(lines, 1):  # using enumerate to map each line of the file to it's line_number
        if key in line:  # searching for the keyword in file
            print(f'{key} is in the line {number}')  # returning the line number

strings = input("Enter all the strings use to wish to search separated by space:\n")
string_list = list(strings.split())
for item in string_list:
    word_search(item,'Example.txt')
67 sẽ đưa ra một ngoại lệ
Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
00

Nhưng nếu bạn muốn tìm các lần xuất hiện khác của chuỗi con thì sao? . Do đó, bằng cách chuyển các vị trí chỉ mục cụ thể, bạn có thể bỏ qua các lần xuất hiện của chuỗi con mà bạn đã xác định

>>>

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
2

Khi bạn chuyển một chỉ mục bắt đầu vượt qua lần xuất hiện đầu tiên của chuỗi con, thì Python sẽ tìm kiếm bắt đầu từ đó. Trong trường hợp này, bạn nhận được một trận đấu khác và không phải là

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
00

Điều đó có nghĩa là văn bản chứa chuỗi con nhiều hơn một lần. Nhưng nó có thường xuyên ở trong đó không?

Bạn có thể sử dụng

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
03 để nhanh chóng nhận được câu trả lời của mình bằng cách sử dụng mã Python mô tả và thành ngữ

>>>

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5

Bạn đã sử dụng

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
03 trên chuỗi chữ thường và chuyển chuỗi con
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 làm đối số. Python đếm tần suất chuỗi con xuất hiện trong chuỗi và trả về câu trả lời. Văn bản chứa chuỗi con bốn lần. Nhưng những chuỗi con này trông như thế nào?

Bạn có thể kiểm tra tất cả các chuỗi con bằng cách tách văn bản của mình ở các đường viền từ mặc định và in các từ vào thiết bị đầu cuối của bạn bằng vòng lặp

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
06

>>>

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
9

Trong ví dụ này, bạn sử dụng

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
07 để tách văn bản tại các khoảng trắng thành các chuỗi, mà Python gói thành một danh sách. Sau đó, bạn lặp lại danh sách này và sử dụng
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1 trên mỗi chuỗi này để xem liệu nó có chứa chuỗi con
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 hay không

Ghi chú. Thay vì in các chuỗi con, bạn cũng có thể lưu chúng vào một danh sách mới, chẳng hạn bằng cách sử dụng cách hiểu danh sách với biểu thức điều kiện

>>>

>>> "secret" not in raw_file_content
False
0

Trong trường hợp này, bạn xây dựng một danh sách chỉ từ những từ có chứa chuỗi con, về cơ bản là lọc văn bản

Bây giờ bạn có thể kiểm tra tất cả các chuỗi con mà Python xác định, bạn có thể nhận thấy rằng Python không quan tâm liệu có bất kỳ ký tự nào sau chuỗi con

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 hay không. Nó tìm thấy từ cho dù nó được theo sau bởi khoảng trắng hay dấu chấm câu. Nó thậm chí còn tìm thấy những từ như
Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
71

Bạn nên biết điều đó, nhưng bạn có thể làm gì nếu muốn đặt các điều kiện chặt chẽ hơn cho việc kiểm tra chuỗi con của mình?

Loại bỏ các quảng cáo

Tìm chuỗi con có điều kiện bằng Regex

Bạn có thể chỉ muốn đối sánh các lần xuất hiện của chuỗi con theo sau dấu chấm câu hoặc xác định các từ chứa chuỗi con cộng với các chữ cái khác, chẳng hạn như

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
71

Đối với những trường hợp như vậy yêu cầu khớp chuỗi phức tạp hơn, bạn có thể sử dụng biểu thức chính quy hoặc biểu thức chính quy với mô-đun

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
73 của Python

Ví dụ: nếu bạn muốn tìm tất cả các từ bắt đầu bằng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 nhưng sau đó được theo sau bởi ít nhất một chữ cái bổ sung, thì bạn có thể sử dụng ký tự từ biểu thức chính quy (
Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
75) theo sau là từ định lượng cộng (
Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
76)

>>>

>>> "secret" not in raw_file_content
False
1

Hàm

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
77 trả về cả chuỗi con khớp với điều kiện cũng như vị trí chỉ mục bắt đầu và kết thúc của nó—chứ không chỉ là
Enter the string/keyword you wish to search:
Codespeedy
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
50

Sau đó, bạn có thể truy cập các thuộc tính này thông qua các phương thức trên đối tượng

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
79, được ký hiệu là
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
20

>>>

>>> "secret" not in raw_file_content
False
2

Những kết quả này mang lại cho bạn rất nhiều sự linh hoạt để tiếp tục làm việc với chuỗi con phù hợp

Ví dụ: bạn chỉ có thể tìm kiếm các chuỗi con được theo sau bởi dấu phẩy (

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
21) hoặc dấu chấm (
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
22)

>>>

>>> "secret" not in raw_file_content
False
3

Có hai kết quả khớp tiềm năng trong văn bản của bạn, nhưng bạn chỉ khớp kết quả đầu tiên phù hợp với truy vấn của mình. Khi bạn sử dụng

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
77, Python lại chỉ tìm thấy kết quả khớp đầu tiên. Điều gì sẽ xảy ra nếu bạn muốn tất cả các đề cập của
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 phù hợp với một điều kiện nhất định?

Để tìm tất cả các kết quả phù hợp bằng cách sử dụng

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
73, bạn có thể làm việc với
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
26

>>>

>>> "secret" not in raw_file_content
False
4

Bằng cách sử dụng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
26, bạn có thể tìm thấy tất cả các kết quả khớp của mẫu trong văn bản của mình. Python lưu tất cả các kết quả khớp dưới dạng chuỗi trong danh sách cho bạn

Khi bạn sử dụng nhóm chụp, bạn có thể chỉ định phần nào của trận đấu mà bạn muốn giữ lại trong danh sách của mình bằng cách đặt phần đó trong ngoặc đơn

>>>

>>> "secret" not in raw_file_content
False
5

Bằng cách đặt bí mật trong dấu ngoặc đơn, bạn đã xác định một nhóm chụp duy nhất. Hàm

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
28 trả về danh sách các chuỗi khớp với nhóm chụp đó, miễn là có chính xác một nhóm chụp trong mẫu. Bằng cách thêm dấu ngoặc đơn xung quanh bí mật, bạn đã loại bỏ được dấu chấm câu

Ghi chú. Hãy nhớ rằng có bốn lần xuất hiện của chuỗi con

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5 trong văn bản của bạn và bằng cách sử dụng
Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
73, bạn đã lọc ra hai lần xuất hiện cụ thể mà bạn khớp theo các điều kiện đặc biệt

Sử dụng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
26 với các nhóm đối sánh là một cách hiệu quả để trích xuất các chuỗi con từ văn bản của bạn. Nhưng bạn chỉ nhận được một danh sách các chuỗi, điều đó có nghĩa là bạn đã mất các vị trí chỉ mục mà bạn có quyền truy cập khi sử dụng
Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
77

Nếu bạn muốn giữ thông tin đó xung quanh, thì

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
73 có thể cung cấp cho bạn tất cả các kết quả phù hợp trong một trình vòng lặp

>>>

>>> "secret" not in raw_file_content
False
6

Khi bạn sử dụng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
54 và chuyển cho nó mẫu tìm kiếm và nội dung văn bản của bạn làm đối số, bạn có thể truy cập từng đối tượng
Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
79 có chứa chuỗi con, cũng như vị trí chỉ mục bắt đầu và kết thúc của nó

Bạn có thể nhận thấy rằng dấu chấm câu xuất hiện trong các kết quả này mặc dù bạn vẫn đang sử dụng nhóm chụp. Đó là bởi vì biểu diễn chuỗi của đối tượng

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
79 hiển thị toàn bộ kết quả khớp thay vì chỉ nhóm bắt đầu tiên

Nhưng đối tượng

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
79 là một nơi chứa thông tin mạnh mẽ và, giống như bạn đã thấy trước đó, bạn chỉ có thể chọn ra thông tin mà bạn cần

>>>

>>> "secret" not in raw_file_content
False
7

Bằng cách gọi

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
58 và chỉ định rằng bạn muốn nhóm chụp đầu tiên, bạn đã chọn từ bí mật không có dấu chấm câu từ mỗi chuỗi con phù hợp

Bạn có thể đi sâu vào chi tiết hơn với khớp chuỗi con khi bạn sử dụng biểu thức chính quy. Thay vì chỉ kiểm tra xem một chuỗi có chứa một chuỗi khác hay không, bạn có thể tìm kiếm các chuỗi con theo các điều kiện phức tạp

Ghi chú. Nếu bạn muốn tìm hiểu thêm về cách sử dụng các nhóm bắt giữ và soạn các mẫu biểu thức chính quy phức tạp hơn, thì bạn có thể tìm hiểu sâu hơn về các biểu thức chính quy trong Python

Sử dụng biểu thức chính quy với

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
73 là một cách tiếp cận tốt nếu bạn cần thông tin về các chuỗi con hoặc nếu bạn cần tiếp tục làm việc với chúng sau khi tìm thấy chúng trong văn bản. Nhưng nếu bạn đang làm việc với dữ liệu dạng bảng thì sao?

Loại bỏ các quảng cáo

Tìm một chuỗi con trong cột DataFrame của gấu trúc

Nếu bạn làm việc với dữ liệu không đến từ tệp văn bản thuần túy hoặc từ đầu vào của người dùng, mà từ tệp CSV hoặc trang tính Excel, thì bạn có thể sử dụng phương pháp tương tự như đã thảo luận ở trên

Tuy nhiên, có một cách tốt hơn để xác định ô nào trong cột chứa chuỗi con. bạn sẽ sử dụng gấu trúc. Trong ví dụ này, bạn sẽ làm việc với tệp CSV chứa tên công ty và khẩu hiệu giả mạo. Bạn có thể download file bên dưới nếu muốn làm việc cùng

Tải xuống miễn phí. Nhấp vào đây để tải xuống mã mẫu mà bạn sẽ sử dụng để kiểm tra xem một chuỗi có chứa chuỗi con không

Khi bạn đang làm việc với dữ liệu dạng bảng trong Python, tốt nhất bạn nên tải nó vào pandas

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
90 trước

>>>

>>> "secret" not in raw_file_content
False
8

Trong khối mã này, bạn đã tải tệp CSV chứa một nghìn hàng dữ liệu công ty giả mạo vào DataFrame của gấu trúc và kiểm tra năm hàng đầu tiên bằng cách sử dụng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
91

Ghi chú. Bạn sẽ cần tạo một môi trường ảo và cài đặt pandas để làm việc với thư viện

Sau khi bạn đã tải dữ liệu vào DataFrame, bạn có thể nhanh chóng truy vấn toàn bộ cột pandas để lọc các mục có chứa chuỗi con

>>>

>>> "secret" not in raw_file_content
False
9

Bạn có thể sử dụng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
92 trên cột gấu trúc và chuyển chuỗi con đó làm đối số để lọc các hàng chứa chuỗi con

Ghi chú. Toán tử lập chỉ mục (

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
93) và toán tử thuộc tính (
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
22) cung cấp các cách trực quan để lấy một cột hoặc lát của DataFrame

Tuy nhiên, nếu bạn đang làm việc với mã sản xuất liên quan đến hiệu suất, pandas khuyên bạn nên sử dụng các phương pháp truy cập dữ liệu được tối ưu hóa để lập chỉ mục và chọn dữ liệu

Khi bạn đang làm việc với

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
92 và bạn cần các tình huống đối sánh phức tạp hơn, bạn cũng có thể sử dụng các biểu thức chính quy. Bạn chỉ cần chuyển một mẫu tìm kiếm tuân thủ regex làm đối số chuỗi con

>>>

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
0

Trong đoạn mã này, bạn đã sử dụng cùng một mẫu mà bạn đã sử dụng trước đó để chỉ khớp các từ chứa bí mật nhưng sau đó tiếp tục với một hoặc nhiều ký tự từ (

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
96). Chỉ một trong số các công ty trong bộ dữ liệu giả mạo này dường như hoạt động bí mật

Bạn có thể viết bất kỳ mẫu biểu thức chính quy phức tạp nào và chuyển nó tới

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
92 để khắc từ cột gấu trúc của bạn chỉ các hàng mà bạn cần cho phân tích của mình

Phần kết luận

Giống như một thợ săn kho báu bền bỉ, bạn đã tìm thấy từng

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
5, bất kể nó được cất giấu kỹ đến đâu. Trong quá trình này, bạn đã học được rằng cách tốt nhất để kiểm tra xem một chuỗi có chứa chuỗi con hay không trong Python là sử dụng toán tử thành viên
>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
1

Bạn cũng đã học cách mô tả sử dụng hai phương thức chuỗi khác, thường bị lạm dụng để kiểm tra các chuỗi con

  • Enter all the strings use to wish to search separated by space:
    Codespeedy developers
    Codespeedy is in the line 2
    Codespeedy is in the line 3
    Codespeedy is in the line 5
    developers is in the line 3
    03 để đếm số lần xuất hiện của một chuỗi con trong một chuỗi
  • def word_search(key, filename):
        with open(filename) as file:  # opening the file using with to ensure it closes after the block of code is executed
            lines = file.readlines()  # reading the lines of the files in order
        for number, line in enumerate(lines, 1):  # using enumerate to map each line of the file to it's line_number
            if key in line:  # searching for the keyword in file
                print(f'{key} is in the line {number}')  # returning the line number
    
    strings = input("Enter all the strings use to wish to search separated by space:\n")
    string_list = list(strings.split())
    for item in string_list:
        word_search(item,'Example.txt')
    67 để lấy vị trí chỉ mục của phần đầu của chuỗi con

Sau đó, bạn đã khám phá cách tìm chuỗi con theo các điều kiện nâng cao hơn với các biểu thức chính quy và một vài hàm trong mô-đun

Enter all the strings use to wish to search separated by space:
Codespeedy developers
Codespeedy is in the line 2
Codespeedy is in the line 3
Codespeedy is in the line 5
developers is in the line 3
73 của Python

Cuối cùng, bạn cũng đã học cách sử dụng phương pháp DataFrame

>>> if "secret" in raw_file_content:
..    print("Found!")
...
Found!
92 để kiểm tra mục nhập nào trong DataFrame của gấu trúc chứa chuỗi con

Bây giờ bạn đã biết cách chọn cách tiếp cận thành ngữ nhất khi làm việc với các chuỗi con trong Python. Tiếp tục sử dụng phương pháp mô tả nhất cho công việc và bạn sẽ viết mã thú vị để đọc và nhanh chóng để người khác hiểu

Tải xuống miễn phí. Nhấp vào đây để tải xuống mã mẫu mà bạn sẽ sử dụng để kiểm tra xem một chuỗi có chứa chuỗi con không

Đánh dấu là đã hoàn thành

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Python tìm dòng chứa chuỗi

Gửi cho tôi thủ thuật Python »

Giới thiệu về Martin Breuss

Python tìm dòng chứa chuỗi
Python tìm dòng chứa chuỗi

Martin thích tự động hóa, trò đùa ngớ ngẩn và rắn, tất cả đều phù hợp với cộng đồng Python. Anh ấy thích học hỏi và khám phá và cũng sẵn sàng nói về nó. Anh ấy viết và ghi nội dung cho Real Python và CodingNomads

» Thông tin thêm về Martin


Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Python tìm dòng chứa chuỗi

Aldren

Python tìm dòng chứa chuỗi

Geir Arne

Python tìm dòng chứa chuỗi

Ian

Python tìm dòng chứa chuỗi

kate

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Python tìm dòng chứa chuỗi

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi