Hướng dẫn how do you extract part of text in python? - làm thế nào để bạn trích xuất một phần văn bản trong python?

Cập nhật: 30/06/2020 bởi06/30/2020 by

Hướng dẫn how do you extract part of text in python? - làm thế nào để bạn trích xuất một phần văn bản trong python?

Trích xuất văn bản từ một tệp là một nhiệm vụ phổ biến trong kịch bản và lập trình, và Python làm cho nó dễ dàng. Trong hướng dẫn này, chúng tôi sẽ thảo luận về một số cách đơn giản để trích xuất văn bản từ một tệp bằng ngôn ngữ lập trình Python 3.

Hãy chắc chắn rằng bạn đang sử dụng Python 3

Trong hướng dẫn này, chúng tôi sẽ sử dụng Python phiên bản 3. Hầu hết các hệ thống được cài đặt sẵn với Python 2.7. Trong khi Python 2.7 được sử dụng trong mã kế thừa, Python 3 là hiện tại và tương lai của ngôn ngữ Python. Trừ khi bạn có một lý do cụ thể để viết hoặc hỗ trợ Python 2, chúng tôi khuyên bạn nên làm việc trong Python 3.

Đối với Microsoft Windows, Python 3 có thể được tải xuống từ trang web chính thức của Python. Khi cài đặt, hãy đảm bảo "Trình khởi chạy cài đặt cho tất cả người dùng" và "Thêm các tùy chọn Python vào đường dẫn" đều được kiểm tra, như trong hình ảnh bên dưới.

Hướng dẫn how do you extract part of text in python? - làm thế nào để bạn trích xuất một phần văn bản trong python?

Trên Linux, bạn có thể cài đặt Python 3 với trình quản lý gói của mình. Chẳng hạn, trên Debian hoặc Ubuntu, bạn có thể cài đặt nó bằng lệnh sau:

sudo apt-get update && sudo apt-get install python3

Đối với macOS, trình cài đặt Python 3 có thể được tải xuống từ python.org, như được liên kết ở trên. Nếu bạn đang sử dụng Trình quản lý gói Homebrew, nó cũng có thể được cài đặt bằng cách mở cửa sổ đầu cuối (Ứng dụng → Tiện ích) và chạy lệnh này:ApplicationsUtilities), and running this command:

brew install python3

Chạy Python

Trên Linux và MacOS, lệnh để chạy trình thông dịch Python 3 là Python3. Trên Windows, nếu bạn đã cài đặt trình khởi chạy, lệnh là PY. Các lệnh trên trang này sử dụng python3; Nếu bạn đang ở trên Windows, hãy thay thế PY cho Python3 trong tất cả các lệnh.python3. On Windows, if you installed the launcher, the command is py. The commands on this page use python3; if you're on Windows, substitute py for python3 in all commands.

Chạy Python không có tùy chọn bắt đầu trình thông dịch tương tác. Để biết thêm thông tin về việc sử dụng trình thông dịch, hãy xem Tổng quan về Python: Sử dụng trình thông dịch Python. Nếu bạn vô tình nhập trình thông dịch, bạn có thể thoát nó bằng lệnh thoát ra lệnh () hoặc thoát ().exit() or quit().

Chạy Python với một tên tệp sẽ diễn giải chương trình Python đó. Ví dụ:

python3 program.py

... Chạy chương trình có trong chương trình tệp.py.program.py.

Được rồi, làm thế nào chúng ta có thể sử dụng Python để trích xuất văn bản từ tệp văn bản?

Đọc dữ liệu từ tệp văn bản

Đầu tiên, chúng ta hãy đọc một tệp văn bản. Giả sử chúng tôi đang làm việc với một tệp có tên Lorem.txt, trong đó chứa các dòng từ văn bản ví dụ Lorem ipsum.lorem.txt, which contains lines from the Lorem Ipsum example text.

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.

Ghi chú

Trong tất cả các ví dụ tiếp theo, chúng tôi làm việc với bốn dòng văn bản có trong tệp này. Sao chép và dán văn bản Latin ở trên vào tệp văn bản và lưu nó dưới dạng Lorem.txt, để bạn có thể chạy mã ví dụ bằng tệp này làm đầu vào.lorem.txt, so you can run the example code using this file as input.

Một chương trình Python có thể đọc một tệp văn bản bằng hàm Open () tích hợp. Ví dụ: chương trình Python 3 bên dưới sẽ mở Lorem.txt để đọc ở chế độ văn bản, đọc nội dung thành một biến chuỗi có tên Nội dung, đóng tệp và in dữ liệu.open() function. For example, the Python 3 program below opens lorem.txt for reading in text mode, reads the contents into a string variable named contents, closes the file, and prints the data.

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents

Ở đây, MyFile là tên chúng tôi đặt cho đối tượng tệp của chúng tôi.myfile is the name we give to our file object.

Tham số "RT" trong hàm Open () có nghĩa là "Chúng tôi đang mở tệp này để đọc dữ liệu văn bản"rt" parameter in the open() function means "we're opening this file to read text data"

Dấu băm ("#") có nghĩa là mọi thứ trên dòng đó đều là một nhận xét và nó bị thông dịch viên Python bỏ qua.#") means that everything on that line is a comment, and it's ignored by the Python interpreter.

Nếu bạn lưu chương trình này trong một tệp có tên Read.py, bạn có thể chạy nó bằng lệnh sau.read.py, you can run it with the following command.

python3 read.py

Lệnh trên xuất ra nội dung của lorem.txt:lorem.txt:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.

Sử dụng "với mở"

Điều quan trọng là đóng các tệp mở của bạn càng sớm càng tốt: Mở tệp, thực hiện thao tác của bạn và đóng nó. Đừng để nó mở trong thời gian dài.

Khi bạn làm việc với các tập tin, việc sử dụng với ... làm tuyên bố ghép là tốt. Đó là cách sạch nhất để mở một tệp, hoạt động trên nó và đóng tệp, tất cả trong một khối mã dễ đọc. Tệp được tự động đóng khi khối mã hoàn thành.

Sử dụng với Open ... As, chúng ta có thể viết lại chương trình của mình để trông như thế này:with open...as, we can rewrite our program to look like this:

with open ('lorem.txt', 'rt') as myfile:  # Open lorem.txt for reading text
    contents = myfile.read()              # Read the entire file to a string
print(contents)                           # Print the string

Ghi chú

Trong tất cả các ví dụ tiếp theo, chúng tôi làm việc với bốn dòng văn bản có trong tệp này. Sao chép và dán văn bản Latin ở trên vào tệp văn bản và lưu nó dưới dạng Lorem.txt, để bạn có thể chạy mã ví dụ bằng tệp này làm đầu vào.

Một chương trình Python có thể đọc một tệp văn bản bằng hàm Open () tích hợp. Ví dụ: chương trình Python 3 bên dưới sẽ mở Lorem.txt để đọc ở chế độ văn bản, đọc nội dung thành một biến chuỗi có tên Nội dung, đóng tệp và in dữ liệu.

Ở đây, MyFile là tên chúng tôi đặt cho đối tượng tệp của chúng tôi.read.py and execute it:

python3 read.py

Output:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.

Tham số "RT" trong hàm Open () có nghĩa là "Chúng tôi đang mở tệp này để đọc dữ liệu văn bản"

Dấu băm ("#") có nghĩa là mọi thứ trên dòng đó đều là một nhận xét và nó bị thông dịch viên Python bỏ qua.

Nếu bạn lưu chương trình này trong một tệp có tên Read.py, bạn có thể chạy nó bằng lệnh sau.

Lệnh trên xuất ra nội dung của lorem.txt:

Thí dụ

Đối với các tệp văn bản, đối tượng tệp lặp lại một dòng văn bản tại một thời điểm. Nó xem xét một dòng văn bản một "đơn vị" dữ liệu, vì vậy chúng ta có thể sử dụng một câu lệnh ... trong câu lệnh lặp để lặp lại một dòng tại một thời điểm:

brew install python3
0

Output:

brew install python3
1

Lưu ý rằng chúng tôi sẽ bị phá vỡ thêm ("Newline") sau mỗi dòng. Đó là bởi vì hai dòng mới đang được in. Đầu tiên là dòng mới ở cuối mỗi dòng của tệp văn bản của chúng tôi. Đường mới thứ hai xảy ra bởi vì, theo mặc định, print () thêm một dòng riêng của riêng nó vào cuối bất cứ điều gì bạn đã yêu cầu nó để in.

Hãy lưu trữ các dòng văn bản của chúng tôi trong một biến - cụ thể, một biến danh sách - vì vậy chúng tôi có thể xem xét kỹ hơn.

Lưu trữ dữ liệu văn bản trong một biến

Trong Python, các danh sách tương tự, nhưng không giống như, một mảng trong C hoặc Java. Một danh sách Python chứa dữ liệu được lập chỉ mục, có độ dài và loại khác nhau.

Thí dụ

brew install python3
2

Đầu ra của chương trình này là một chút khác nhau. Thay vì in nội dung của danh sách, chương trình này in đối tượng danh sách của chúng tôi, trông như thế này:

Output:

brew install python3
3

Ở đây, chúng tôi thấy nội dung thô của danh sách. Trong mẫu đối tượng thô của nó, một danh sách được biểu diễn dưới dạng danh sách phân loại bằng dấu phẩy. Ở đây, mỗi phần tử được biểu diễn dưới dạng một chuỗi và mỗi dòng được biểu diễn dưới dạng chuỗi ký tự thoát của nó, \ n.\n.

Giống như một mảng C hoặc Java, các phần tử danh sách được truy cập bằng cách chỉ định một số chỉ mục sau tên biến, trong dấu ngoặc. Số chỉ mục bắt đầu ở 0-các từ khác, phần tử thứ n của danh sách có chỉ mục số N-1.

Ghi chú

Nếu bạn đang tự hỏi tại sao các số chỉ mục bắt đầu ở mức 0 thay vì một, bạn không đơn độc. Các nhà khoa học máy tính đã tranh luận về tính hữu ích của các hệ thống đánh số dựa trên không trong quá khứ. Năm 1982, Edsger Dijkstra đã đưa ra ý kiến ​​của mình về chủ đề này, giải thích lý do tại sao việc đánh số dựa trên không là cách tốt nhất để lập chỉ mục dữ liệu trong khoa học máy tính. Bạn có thể tự đọc bản ghi nhớ - anh ấy đưa ra một lập luận hấp dẫn.

Thí dụ

Chúng ta có thể in phần tử đầu tiên của các dòng bằng cách chỉ định số 0, có trong dấu ngoặc sau tên của danh sách:lines by specifying index number 0, contained in brackets after the name of the list:

brew install python3
4

Output:

brew install python3
5

Thí dụ

Hoặc dòng thứ ba, bằng cách chỉ định chỉ mục số 2:

brew install python3
6

Output:

brew install python3
7

Nhưng nếu chúng ta cố gắng truy cập một chỉ mục mà không có giá trị, chúng ta sẽ gặp lỗi:

Thí dụ

brew install python3
8

Output:

brew install python3
9

Thí dụ

Một đối tượng danh sách là một trình lặp, vì vậy để in mọi yếu tố của danh sách, chúng ta có thể lặp lại nó với ... trong:for...in:

python3 program.py
0

Output:

brew install python3
1

Nhưng chúng tôi vẫn đang nhận được thêm dòng mới. Mỗi dòng của tệp văn bản của chúng tôi kết thúc bằng một ký tự dòng mới ('\ n'), đang được in. Ngoài ra, sau khi in từng dòng, in () thêm một dòng mới của riêng mình, trừ khi bạn bảo nó làm khác.\n'), which is being printed. Also, after printing each line, print() adds a newline of its own, unless you tell it to do otherwise.

Chúng tôi có thể thay đổi hành vi mặc định này bằng cách chỉ định tham số cuối trong cuộc gọi in () của chúng tôi:end parameter in our print() call:

python3 program.py
2

Bằng cách đặt kết thúc thành một chuỗi trống (hai trích dẫn đơn, không có khoảng trống), chúng tôi nói với Print () để in không có gì ở cuối dòng, thay vì một ký tự mới.end to an empty string (two single quotes, with no space), we tell print() to print nothing at the end of a line, instead of a newline character.

Thí dụ

Chương trình sửa đổi của chúng tôi trông như thế này:

python3 program.py
3

Output:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.

Các dòng mới mà bạn thấy ở đây thực sự có trong tập tin; Chúng là một nhân vật đặc biệt ('\ n') ở cuối mỗi dòng. Chúng tôi muốn loại bỏ những thứ này, vì vậy chúng tôi không phải lo lắng về chúng trong khi chúng tôi xử lý tệp.\n') at the end of each line. We want to get rid of these, so we don't have to worry about them while we process the file.

Cách tước dòng mới

Để loại bỏ hoàn toàn các dòng mới, chúng ta có thể tước chúng. Để tước một chuỗi là loại bỏ một hoặc nhiều ký tự, thường là khoảng trắng, từ đầu hoặc cuối chuỗi.strip a string is to remove one or more characters, usually whitespace, from either the beginning or end of the string.

Mẹo

Quá trình này đôi khi cũng được gọi là "Trimming."

Python 3 Đối tượng chuỗi có một phương thức gọi là rstrip (), dải các ký tự từ phía bên phải của chuỗi. Ngôn ngữ tiếng Anh đọc từ trái sang phải, vì vậy tước từ phía bên phải sẽ loại bỏ các ký tự từ cuối.rstrip(), which strips characters from the right side of a string. The English language reads left-to-right, so stripping from the right side removes characters from the end.

Nếu biến được đặt tên là myString, chúng ta có thể tước bên phải của nó bằng myString.rstrip (chars), trong đó chars là một chuỗi các ký tự để dải. Ví dụ: "123abc" .rstrip ("bc") trả về 123a.mystring, we can strip its right side with mystring.rstrip(chars), where chars is a string of characters to strip. For example, "123abc".rstrip("bc") returns 123a.

Mẹo

Quá trình này đôi khi cũng được gọi là "Trimming."Hello) in double-quotes ("Hello"). If you're representing a single character (such as b), or a single special character such as the newline character (\n), it's traditional to use single quotes ('b', '\n'). For more information about how to use strings in Python, you can read the documentation of strings in Python.

Chuỗi statement.rstrip ('\ n') sẽ tước một ký tự dòng mới từ phía bên phải của chuỗi. Phiên bản sau của chương trình của chúng tôi dải các dòng mới khi mỗi dòng được đọc từ tệp văn bản:string.rstrip('\n') will strip a newline character from the right side of string. The following version of our program strips the newlines when each line is read from the text file:

python3 program.py
5

Văn bản hiện được lưu trữ trong một biến danh sách, vì vậy các dòng riêng lẻ có thể được truy cập bằng số chỉ mục. Newlines đã bị tước, vì vậy chúng tôi không phải lo lắng về chúng. Chúng ta luôn có thể đặt chúng trở lại sau nếu chúng ta xây dựng lại tệp và viết nó vào đĩa.

Bây giờ, chúng ta hãy tìm kiếm các dòng trong danh sách cho một chuỗi con cụ thể.

Tìm kiếm văn bản cho một nền tảng

Giả sử chúng tôi muốn định vị mọi sự xuất hiện của một cụm từ nhất định, hoặc thậm chí một chữ cái. Ví dụ, có lẽ chúng ta cần biết mọi "E" ở đâu. Chúng ta có thể thực hiện điều này bằng phương thức Find () của chuỗi.

Danh sách lưu trữ từng dòng văn bản của chúng tôi dưới dạng đối tượng chuỗi. Tất cả các đối tượng chuỗi có một phương thức, find (), định vị sự xuất hiện đầu tiên của một chuỗi con trong chuỗi.find(), which locates the first occurrence of a substrings in the string.

Chúng ta hãy sử dụng phương thức Find () để tìm kiếm chữ cái "E" trong dòng đầu tiên của tệp văn bản của chúng tôi, được lưu trữ trong danh sách Mylines. Phần tử đầu tiên của mylines là một đối tượng chuỗi chứa dòng đầu tiên của tệp văn bản. Đối tượng chuỗi này có phương thức Find ().find() method to search for the letter "e" in the first line of our text file, which is stored in the list mylines. The first element of mylines is a string object containing the first line of the text file. This string object has a find() method.

Trong dấu ngoặc đơn của find (), chúng tôi chỉ định các tham số. Tham số đầu tiên và duy nhất là chuỗi để tìm kiếm, "E". Câu lệnh Mylines [0] .find ("E") bảo người phiên dịch tìm kiếm về phía trước, bắt đầu từ đầu chuỗi, một ký tự tại một thời điểm, cho đến khi tìm thấy chữ "e." Khi nó tìm thấy một, nó dừng tìm kiếm và trả về số chỉ mục ở vị trí "E" đó. Nếu nó đạt đến cuối chuỗi, nó sẽ trả về -1 để chỉ ra không tìm thấy gì.find(), we specify parameters. The first and only required parameter is the string to search for, "e". The statement mylines[0].find("e") tells the interpreter to search forward, starting at the beginning of the string, one character at a time, until it finds the letter "e." When it finds one, it stops searching, and returns the index number where that "e" is located. If it reaches the end of the string, it returns -1 to indicate nothing was found.

Thí dụ

python3 program.py
6

Output:

3

Giá trị trả về "3" cho chúng ta biết rằng chữ "E" là ký tự thứ tư, "E" trong "Lorem". .

Phương thức Find () có hai tham số bổ sung tùy chọn, bổ sung: chỉ mục bắt đầu và chỉ mục dừng, cho biết trong chuỗi trong chuỗi mà tìm kiếm sẽ bắt đầu và kết thúc. Chẳng hạn, String.find ("ABC", 10, 20) tìm kiếm cho "ABC", nhưng chỉ từ ký tự thứ 11 đến thứ 21. Nếu dừng không được chỉ định, hãy tìm () bắt đầu khi bắt đầu chỉ mục và dừng ở cuối chuỗi.find() method takes two optional, additional parameters: a start index and a stop index, indicating where in the string the search should begin and end. For instance, string.find("abc", 10, 20) searches for the substring "abc", but only from the 11th to the 21st character. If stop is not specified, find() starts at index start, and stops at the end of the string.

Thí dụ

Giá trị trả về "3" cho chúng ta biết rằng chữ "E" là ký tự thứ tư, "E" trong "Lorem". .mylines[0], beginning at the fifth character.

python3 program.py
7

Output:

python3 program.py
8

Phương thức Find () có hai tham số bổ sung tùy chọn, bổ sung: chỉ mục bắt đầu và chỉ mục dừng, cho biết trong chuỗi trong chuỗi mà tìm kiếm sẽ bắt đầu và kết thúc. Chẳng hạn, String.find ("ABC", 10, 20) tìm kiếm cho "ABC", nhưng chỉ từ ký tự thứ 11 đến thứ 21. Nếu dừng không được chỉ định, hãy tìm () bắt đầu khi bắt đầu chỉ mục và dừng ở cuối chuỗi.

Thí dụ

Giá trị trả về "3" cho chúng ta biết rằng chữ "E" là ký tự thứ tư, "E" trong "Lorem". .

python3 program.py
9

Output:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
0

Phương thức Find () có hai tham số bổ sung tùy chọn, bổ sung: chỉ mục bắt đầu và chỉ mục dừng, cho biết trong chuỗi trong chuỗi mà tìm kiếm sẽ bắt đầu và kết thúc. Chẳng hạn, String.find ("ABC", 10, 20) tìm kiếm cho "ABC", nhưng chỉ từ ký tự thứ 11 đến thứ 21. Nếu dừng không được chỉ định, hãy tìm () bắt đầu khi bắt đầu chỉ mục và dừng ở cuối chuỗi.

Chẳng hạn, câu lệnh sau tìm kiếm "E" trong Mylines [0], bắt đầu từ ký tự thứ năm.find() doesn't locate the substring in the search range, it returns the number -1, indicating failure:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
1

Output:

-1

Nói cách khác, bắt đầu từ ký tự thứ 5 trong dòng [0], "E" đầu tiên được đặt tại Index 24 ("E" trong "NEC").

Để bắt đầu tìm kiếm tại INDEX 10 và dừng tại INDEX 30:

("E" đầu tiên trong "Maecenas").

Nếu tìm () không định vị chuỗi con trong phạm vi tìm kiếm, nó sẽ trả về số -1, cho biết thất bại:find the letter "e". When an occurrence is found, we call find again, starting from a new location in the string. Specifically, the location of the last occurrence, plus the length of the string (so we can move forward past the last one). When find returns -1, or the start index exceeds the length of the string, we stop.

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
2

Output:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
3

Không có sự xuất hiện "E" giữa các chỉ số 25 và 30.

Tìm thấy tất cả các sự cố của một chuỗi con

Nhưng điều gì sẽ xảy ra nếu chúng ta muốn định vị mọi sự xuất hiện của một nền tảng, không chỉ là lần đầu tiên chúng ta gặp phải? Chúng ta có thể lặp lại chuỗi, bắt đầu từ chỉ mục của trận đấu trước.re. To use it in your program, import the module before you use it:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
4

Trong ví dụ này, chúng tôi sẽ sử dụng một vòng lặp trong thời gian để liên tục tìm thấy chữ "E". Khi tìm thấy sự xuất hiện, chúng tôi gọi lại tìm lại, bắt đầu từ một vị trí mới trong chuỗi. Cụ thể, vị trí của lần xuất hiện cuối cùng, cộng với chiều dài của chuỗi (vì vậy chúng ta có thể di chuyển về phía trước qua cái cuối cùng). Khi tìm trả về -1 hoặc chỉ mục bắt đầu vượt quá độ dài của chuỗi, chúng tôi dừng lại.re module implements regular expressions by compiling a search pattern into a pattern object. Methods of this object can then be used to perform match operations.

Kết hợp các biểu thức thường xuyênd and ends in the letter r. We can accomplish this using the regular expression "\bd\w*r\b". What does this mean?

Đối với các tìm kiếm phức tạp, sử dụng các biểu thức thường xuyên.Mô -đun biểu thức chính quy Python được gọi là Re. Để sử dụng nó trong chương trình của bạn, hãy nhập mô -đun trước khi bạn sử dụng nó:
Mô -đun RE thực hiện các biểu thức chính quy bằng cách biên dịch mẫu tìm kiếm thành một đối tượng mẫu. Các phương thức của đối tượng này sau đó có thể được sử dụng để thực hiện các hoạt động khớp. Ví dụ: giả sử bạn muốn tìm kiếm bất kỳ từ nào trong tài liệu của bạn bắt đầu bằng chữ D và kết thúc trong chữ r. Chúng ta có thể thực hiện điều này bằng cách sử dụng biểu thức chính quy "\ bd \ w*r \ b". Điều đó có nghĩa là gì?_").
Trình tự ký tự Ý nghĩad.
\ b Một ranh giới từ khớp với một chuỗi trống (bất cứ điều gì, bao gồm không có gì cả), nhưng chỉ khi nó xuất hiện trước hoặc sau một ký tự không từ. "Các ký tự từ" là các chữ số từ 0 đến 9, chữ thường và chữ in hoa hoặc dấu gạch dưới ("_"). represents any word character, and * is a quantifier meaning "zero or more of the previous character." So \w* will match zero or more word characters.
d Chữ thường chữ d.r.
Mô -đun RE thực hiện các biểu thức chính quy bằng cách biên dịch mẫu tìm kiếm thành một đối tượng mẫu. Các phương thức của đối tượng này sau đó có thể được sử dụng để thực hiện các hoạt động khớp. Ví dụ: giả sử bạn muốn tìm kiếm bất kỳ từ nào trong tài liệu của bạn bắt đầu bằng chữ D và kết thúc trong chữ r. Chúng ta có thể thực hiện điều này bằng cách sử dụng biểu thức chính quy "\ bd \ w*r \ b". Điều đó có nghĩa là gì?

Trình tự ký tựdestroyer, dour, and doctor, and the abbreviation dr.

Để sử dụng biểu thức chính quy này trong các hoạt động tìm kiếm Python, trước tiên chúng tôi biên dịch nó thành một đối tượng mẫu. Chẳng hạn, câu lệnh Python sau đây tạo ra một mẫu đối tượng mẫu được đặt tên mà chúng ta có thể sử dụng để thực hiện các tìm kiếm bằng cách sử dụng biểu thức thông thường đó.pattern which we can use to perform searches using that regular expression.

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
5

Ghi chú

Chữ R trước chuỗi của chúng tôi trong câu lệnh trên là quan trọng. Nó bảo Python giải thích chuỗi của chúng tôi là một chuỗi thô, chính xác như chúng tôi đã gõ nó. Nếu chúng ta không có tiền tố chuỗi với R, Python sẽ diễn giải các chuỗi thoát như \ B theo những cách khác. Bất cứ khi nào bạn cần Python để giải thích các chuỗi của mình theo nghĩa đen, chỉ định nó là một chuỗi thô bằng cách tiền tố nó với r.r before our string in the statement above is important. It tells Python to interpret our string as a raw string, exactly as we've typed it. If we didn't prefix the string with an r, Python would interpret the escape sequences such as \b in other ways. Whenever you need Python to interpret your strings literally, specify it as a raw string by prefixing it with r.

Bây giờ chúng ta có thể sử dụng các phương thức của đối tượng mẫu, chẳng hạn như search (), để tìm kiếm một chuỗi cho biểu thức chính quy được biên dịch, tìm kiếm một trận đấu. Nếu nó tìm thấy một, nó trả về một kết quả đặc biệt được gọi là đối tượng khớp. Mặt khác, nó không trả về không, một hằng số python tích hợp được sử dụng như giá trị boolean "sai".search(), to search a string for the compiled regular expression, looking for a match. If it finds one, it returns a special result called a match object. Otherwise, it returns None, a built-in Python constant that is used like the boolean value "false".

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
6

Output:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
7

Để thực hiện tìm kiếm không nhạy cảm trường hợp, bạn có thể chỉ định hằng số đặc biệt re.ignorecase trong bước biên dịch:re.IGNORECASE in the compile step:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
8

Output:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc fringilla arcu congue metus aliquam mollis.
Mauris nec maximus purus. Maecenas sit amet pretium tellus.
Quisque at dignissim lacus.
7

Để tất cả chúng cùng nhau

Vì vậy, bây giờ chúng tôi biết cách mở một tệp, đọc các dòng vào một danh sách và xác định vị trí một chuỗi con trong bất kỳ phần tử danh sách nào. Hãy sử dụng kiến ​​thức này để xây dựng một số chương trình ví dụ.

In tất cả các dòng chứa chuỗi con

Chương trình dưới đây đọc một dòng tệp nhật ký từng dòng. Nếu dòng chứa từ "lỗi", nó được thêm vào một danh sách gọi là lỗi. Nếu không, nó bị bỏ qua. Phương thức chuỗi thấp hơn () chuyển đổi tất cả các chuỗi thành chữ thường cho các mục đích so sánh, làm cho trường hợp tìm kiếm không nhạy cảm mà không làm thay đổi các chuỗi gốc.errors. If not, it is ignored. The lower() string method converts all strings to lowercase for comparison purposes, making the search case-insensitive without altering the original strings.

Lưu ý rằng phương thức find () được gọi trực tiếp trên kết quả của phương thức thấp hơn (); Điều này được gọi là chuỗi phương pháp. Ngoài ra, lưu ý rằng trong câu lệnh in (), chúng tôi xây dựng một chuỗi đầu ra bằng cách nối một số chuỗi với toán tử +.find() method is called directly on the result of the lower() method; this is called method chaining. Also, note that in the print() statement, we construct an output string by joining several strings with the + operator.

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
0

Đầu vào (được lưu trữ trong logfile.txt):

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
1

Output:

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
2

Trích xuất tất cả các dòng chứa chuỗi con, sử dụng regex

Chương trình dưới đây tương tự như chương trình trên, nhưng sử dụng mô -đun biểu thức thường xuyên. Các lỗi và số dòng được lưu trữ dưới dạng Tuples, ví dụ: (vải lanh, dòng). Bộ tuple được tạo bởi dấu ngoặc đơn bổ sung trong câu lệnh Lỗi.APPEND (). Các yếu tố của tuple được tham chiếu tương tự như một danh sách, với một chỉ mục dựa trên không trong ngoặc. Như được xây dựng ở đây, ERR [0] là một tấm vải lanh và ERR [1] là dòng liên kết chứa lỗi.re regular expressions module. The errors and line numbers are stored as tuples, e.g., (linenum, line). The tuple is created by the additional enclosing parentheses in the errors.append() statement. The elements of the tuple are referenced similar to a list, with a zero-based index in brackets. As constructed here, err[0] is a linenum and err[1] is the associated line containing an error.

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
3

Output:

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
4

Trích xuất tất cả các dòng chứa số điện thoại

Chương trình dưới đây in bất kỳ dòng nào của tệp văn bản, Info.txt, chứa số điện thoại Hoa Kỳ hoặc quốc tế. Nó hoàn thành điều này với biểu thức chính quy "(\+\ d {1,2})? [\ S .-]? \ D {3} [\ s .-]? \ D {4}". Regex này phù hợp với các ký hiệu số điện thoại sau:info.txt, which contains a US or international phone number. It accomplishes this with the regular expression "(\+\d{1,2})?[\s.-]?\d{3}[\s.-]?\d{4}". This regex matches the following phone number notations:

  • 123-456-7890
  • (123) 456-7890
  • 123 456 7890
  • 123.456.7890
  • +91 (123) 456-7890
myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
5

Output:

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
6

Tìm kiếm một từ điển cho các từ

Chương trình dưới đây tìm kiếm từ điển cho bất kỳ từ nào bắt đầu bằng H và kết thúc bằng PE. Đối với đầu vào, nó sử dụng một tệp từ điển có trên nhiều hệ thống Unix,/usr/share/dict/words.h and end in pe. For input, it uses a dictionary file included on many Unix systems, /usr/share/dict/words.

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
7

Output:

myfile = open("lorem.txt", "rt") # open lorem.txt for reading text
contents = myfile.read()         # read the entire file to string
myfile.close()                   # close the file
print(contents)                  # print string contents
8