Hướng dẫn extract specific paragraph from text file python - trích xuất đoạn văn bản cụ thể từ tệp văn bản python

Tôi là người mới đến Python, và tôi có một câu hỏi. Tôi có một số tệp văn bản và tôi muốn trích xuất phần kết luận của mỗi tệp. Các tệp văn bản trông như thế này:
The text files looks like this:


Kết quả: Trong các phân tích được điều chỉnh, tăng gấp đôi số lượng PAC hàng giờ có liên quan đến sự gia tăng đáng kể rủi ro AF [tỷ lệ nguy hiểm, 1,17 [95% CI, 1,13 đến 1.22] giới hạn: Nghiên cứu này không thiết lập mối liên hệ nhân quả giữa PACS và AF. Kết luận : Việc bổ sung số lượng PAC vào thuật toán rủi ro AF được xác nhận cung cấp phân biệt rủi ro AF vượt trội và cải thiện đáng kể việc phân loại lại rủi ro. Nghiên cứu thêm là cần thiết để xác định liệu sửa đổi PAC có thể giảm rủi ro AF hay không. và Viện Y tế Quốc gia.
LIMITATION: This study does not establish a causal link between PACs and AF.
CONCLUSION: The addition of PAC count to a validated AF risk algorithm provides superior AF risk discrimination and significantly improves risk reclassification. Further study is needed to determine whether PAC modification can prospectively reduce AF risk.
PRIMARY FUNDING SOURCE: American Heart Association, Joseph Drown Foundation, and National Institutes of Health.


Và tôi có nhiều tệp trong cùng một thư mục, làm thế nào để làm tương tự với tất cả các tệp trong thư mục này? Cảm ơn bạn trước!
Thank you in advance!

hỏi ngày 19 tháng 3 năm 2014 lúc 18:54Mar 19, 2014 at 18:54

2

Tôi không giỏi Regex, và không chắc chắn đó có phải là cách tốt nhất không, nhưng nó hoạt động :]

import os
import re
path = 'path/to/your/files/'
for i in os.listdir[path]:
    with open[path+i] as f:
        content = f.read[]
        pattern = re.compile['CONCLUSION:\s*[[\s\w.]*]\n[A-Z\s]*:']
        print pattern.findall[content][0]

Đã trả lời ngày 19 tháng 3 năm 2014 lúc 19:12Mar 19, 2014 at 19:12

TaxellooltaxelloolTaxellool

3,8934 Huy hiệu vàng20 Huy hiệu bạc37 Huy hiệu đồng4 gold badges20 silver badges37 bronze badges

5

Bạn nên sử dụng các biểu thức thông thường để trích xuất dữ liệu mà bạn cần:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]

Điều này tìm kiếm tiêu đề

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 và sau đó quét dữ liệu sau đó, dừng sau tiêu đề tiếp theo sẽ luôn là một từ vốn như bạn đã chỉ định.

Đã trả lời ngày 19 tháng 3 năm 2014 lúc 19:28Mar 19, 2014 at 19:28

anon582847382anon582847382anon582847382

Huy hiệu vàng 19.2K55 gold badges52 silver badges57 bronze badges

Điều này sẽ giúp bạn liệt kê tất cả các tệp trong thư mục.

Sau đó cho mỗi tệp,

  1. Lặp đi lặp lại tất cả các dòng
  2. Xem nếu dòng hiện tại bắt đầu bằng kết luận:
  3. Thực hiện một chuỗi con trên dòng đó để có được tất cả các nội dung sau khi kết luận từ:

Đã trả lời ngày 19 tháng 3 năm 2014 lúc 19:02Mar 19, 2014 at 19:02

Izaaz Yunusizaaz YunusIzaaz Yunus

2.8401 Huy hiệu vàng17 Huy hiệu bạc28 Huy hiệu đồng1 gold badge17 silver badges28 bronze badges

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

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.

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ú

Th thụt lề là quan trọng trong Python. Các chương trình Python sử dụng không gian trắng ở đầu một dòng để xác định phạm vi, chẳng hạn như một khối mã. Chúng tôi khuyên bạn nên sử dụng bốn không gian cho mỗi cấp độ thụt và bạn sử dụng không gian thay vì các tab. Trong các ví dụ sau, hãy đảm bảo mã của bạn được thụt vào chính xác như được trình bày ở đây.

Thí dụ

Lưu chương trình dưới dạng Read.py và thực hiện nó: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.

Đọc các tệp văn bản theo từng dòng

Trong các ví dụ cho đến nay, chúng tôi đã đọc trong toàn bộ tập tin cùng một lúc. Đọc một tệp đầy đủ không phải là vấn đề lớn với các tệp nhỏ, nhưng nói chung, đó không phải là một ý tưởng tuyệt vời. Đối với một điều, nếu tệp của bạn lớn hơn số lượng bộ nhớ có sẵn, bạn sẽ gặp phải lỗi.

Trong hầu hết mọi trường hợp, bạn nên đọc tệp văn bản một dòng tại một thời điểm tốt hơn.

Trong Python, đối tượng tệp là một trình lặp. Một người lặp là một loại đối tượng Python hoạt động theo những cách nhất định khi được vận hành liên tục. Chẳng hạn, bạn có thể sử dụng một vòng lặp For để hoạt động trên đối tượng tệp nhiều lần và mỗi lần thực hiện thao tác tương tự, bạn sẽ nhận được kết quả khác nhau hoặc "tiếp theo".

Thí dụ

Lưu chương trình dưới dạng Read.py và thực hiện nó:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
2

Output:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
3

Đọc các tệp văn bản theo từng dòng

Trong các ví dụ cho đến nay, chúng tôi đã đọc trong toàn bộ tập tin cùng một lúc. Đọc một tệp đầy đủ không phải là vấn đề lớn với các tệp nhỏ, nhưng nói chung, đó không phải là một ý tưởng tuyệt vời. Đối với một điều, nếu tệp của bạn lớn hơn số lượng bộ nhớ có sẵn, bạn sẽ gặp phải lỗi.

Trong hầu hết mọi trường hợp, bạn nên đọc tệp văn bản một dòng tại một thời điểm tốt hơn.

Trong Python, đối tượng tệp là một trình lặp. Một người lặp là một loại đối tượng Python hoạt động theo những cách nhất định khi được vận hành liên tục. Chẳng hạn, bạn có thể sử dụng một vòng lặp For để hoạt động trên đối tượng tệp nhiều lần và mỗi lần thực hiện thao tác tương tự, bạn sẽ nhận được kết quả khác nhau hoặc "tiếp theo".

Thí dụ

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
4

Lưu chương trình dưới dạng Read.py và thực hiện nó:

Output:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
5

Đọc các tệp văn bản theo từng dòng\n.

Trong các ví dụ cho đến nay, chúng tôi đã đọc trong toàn bộ tập tin cùng một lúc. Đọc một tệp đầy đủ không phải là vấn đề lớn với các tệp nhỏ, nhưng nói chung, đó không phải là một ý tưởng tuyệt vời. Đối với một điều, nếu tệp của bạn lớn hơn số lượng bộ nhớ có sẵn, bạn sẽ gặp phải lỗi.

Ghi chú

Th thụt lề là quan trọng trong Python. Các chương trình Python sử dụng không gian trắng ở đầu một dòng để xác định phạm vi, chẳng hạn như một khối mã. Chúng tôi khuyên bạn nên sử dụng bốn không gian cho mỗi cấp độ thụt và bạn sử dụng không gian thay vì các tab. Trong các ví dụ sau, hãy đảm bảo mã của bạn được thụt vào chính xác như được trình bày ở đây.

Thí dụ

Lưu chương trình dưới dạng Read.py và thực hiện nó:lines by specifying index number 0, contained in brackets after the name of the list:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
6

Output:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
7

Thí dụ

Lưu chương trình dưới dạng Read.py và thực hiện nó:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
8

Output:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
9

Đọc các tệp văn bản theo từng dòng

Thí dụ

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

Output:

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

Thí dụ

Lưu chương trình dưới dạng Read.py và thực hiện nó:for...in:

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

Output:

import re
import os, os.path

PATH = 'path/to/your/files/'

conclusions = []
for file in os.listdir[path]:
    with open[os.path.join[PATH, file]] as f:
        data = f.read[]

    conclusion = re.search['CONCLUSION: [.*?][[A-Z]{2,}]', data].group[1]
    conclusions.append[conclusion]
3

Đọc các tệp văn bản theo từng dòng\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:

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

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:

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

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.

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.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:

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

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.

Khi bạn đại diện cho một chuỗi trong chương trình của bạn với nội dung theo nghĩa đen của nó, nó được gọi là một chuỗi theo nghĩa đen. Trong Python [như trong hầu hết các ngôn ngữ lập trình], các chữ viết luôn được trích dẫn - được đặt ở hai bên theo trích dẫn đơn ['] hoặc double ["]. Trong Python, trích dẫn đơn và đôi tương đương; Miễn là chúng khớp với cả hai đầu của chuỗi. Đó là truyền thống để đại diện cho một chuỗi có thể đọc được của con người [chẳng hạn như Hello] trong các trình điều khiển kép ["Xin chào"]. Nếu bạn đại diện cho một ký tự duy nhất [như B], như B], Hoặc một ký tự đặc biệt duy nhất như ký tự dòng mới [\ n], sử dụng các trích dẫn đơn lẻ ['B', '\ n'] truyền thống về cách sử dụng chuỗi trong Python, bạn có thể đọc tài liệu về chuỗi Trong 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:

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ể.find[], which locates the first occurrence of a substrings in the string.

Tìm kiếm văn bản cho một nền tảngfind[] 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.

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.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ụ

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

Output:

3

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

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.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ụ

Cách tước dòng mớimylines[0], beginning at the fifth character.

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

Output:

brew install python3
0

Để 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.

Thí dụ

Mẹo

brew install python3
1

Output:

brew install python3
2

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

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[] doesn't locate the substring in the search range, it returns the number -1, indicating failure:

brew install python3
3

Output:

-1

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.

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.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.

brew install python3
4

Output:

brew install python3
5

Kết hợp các biểu thức thường xuyên

Đố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ó:re. To use it in your program, import the module before you use it:

brew install python3
6

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.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.

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ì?d and ends in the letter r. We can accomplish this using the regular expression "\bd\w*r\b". What does this mean?

Trình tự ký tựÝ nghĩa
\ 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 ["_"]._"].
d Chữ thường chữ d.d.
\ w* \ W đại diện cho bất kỳ ký tự từ nào và * là một định lượng định lượng có nghĩa là "0 hoặc nhiều hơn của ký tự trước đó." Vì vậy, \ w* sẽ khớp với số không hoặc nhiều ký tự từ. 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.
r Chữ thường chữ r.r.
\ 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 ["_"].

ddestroyer, dour, and doctor, and the abbreviation dr.

Chữ thường chữ d.pattern which we can use to perform searches using that regular expression.

brew install python3
7

\ w*

\ W đại diện cho bất kỳ ký tự từ nào và * là một định lượng định lượng có nghĩa là "0 hoặc nhiều hơn của ký tự trước đó." Vì vậy, \ w* sẽ khớp với số không hoặc nhiều ký tự từ.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.

rsearch[], 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".

brew install python3
8

Output:

brew install python3
9

Chữ thường chữ r.re.IGNORECASE in the compile step:

python3 program.py
0

Output:

brew install python3
9

Ranh giới từ.

Vì vậy, biểu thức chính quy này sẽ khớp với bất kỳ chuỗi nào có thể được mô tả là "một ranh giới từ, sau đó là chữ thường 'd', sau đó không hoặc nhiều ký tự từ, sau đó là chữ thường 'r', sau đó là một ranh giới từ." Chuỗi mô tả theo cách này bao gồm các từ Kẻ hủy diệt, Dour và Bác sĩ, và chữ viết tắt 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 đó.

Ghi chú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.

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.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.

python3 program.py
2

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".

python3 program.py
3

Output:

python3 program.py
4

Để 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:

Để tất cả chúng cùng nhaure 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.

python3 program.py
5

Output:

python3 program.py
6

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
python3 program.py
7

Output:

python3 program.py
8

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.

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

Làm thế nào để bạn trích xuất một đoạn văn từ một tệp văn bản trong Python?

Cách trích xuất các phần cụ thể của tệp văn bản bằng Python..
Hãy chắc chắn rằng bạn đang sử dụng Python 3 ..
Đọc dữ liệu từ mộ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 thường xuyên ..
Để tất cả chúng cùng nhau..

Làm thế nào để bạn trích xuất một dòng từ một tệp văn bản trong Python?

Phương thức 1: FileObject.ReadLines [] Một đối tượng tệp có thể được tạo trong python và sau đó readlines [] phương thức có thể được gọi trên đối tượng này để đọc các dòng vào một luồng.Phương pháp này được ưa thích khi một dòng hoặc một phạm vi dòng từ tệp cần được truy cập đồng thời.fileobject.readlines[] A file object can be created in Python and then readlines[] method can be invoked on this object to read lines into a stream. This method is preferred when a single line or a range of lines from a file needs to be accessed simultaneously.

Làm thế nào để bạn trích xuất một từ nhất định từ một tệp trong Python?

Sử dụng các biểu thức chính quy để trích xuất bất kỳ từ cụ thể nào chúng ta có thể sử dụng phương thức search [] từ mô -đun RE để tìm sự xuất hiện đầu tiên của từ và sau đó chúng ta có thể lấy từ bằng cách cắt lát.Phương thức RE.Search [] sẽ lấy từ để được trích xuất ở dạng biểu thức thông thường và chuỗi làm đầu vào và trả về một RE.use search[] method from re module to find the first occurrence of the word and then we can obtain the word using slicing. re.search[] method will take the word to be extracted in regular expression form and the string as input and and returns a re.

Làm cách nào để tìm một từ cụ thể trong một tệp văn bản python?

Phương pháp 1: Tìm chỉ mục của chuỗi trong tệp văn bản bằng cách sử dụng readline [] trong phương thức này, chúng tôi đang sử dụng hàm readline [] và kiểm tra hàm find [], phương thức này trả về -1 nếu không tìm thấy giá trịvà nếu thấy nó trả về 0.Finding the index of the string in the text file using readline[] In this method, we are using the readline[] function, and checking with the find[] function, this method returns -1 if the value is not found and if found it returns 0.

Bài Viết Liên Quan

Chủ Đề