Hướng dẫn how extract particular data from text file in python? - làm thế nào để trích xuất dữ liệu cụ thể từ tệp văn bản trong python?

Bạn có thể sử dụng các khung dữ liệu pandas để làm điều này mà không gặp rắc rối của split:

parsed_file = pandas.read_csv("filename", header = 0)

Sẽ tự động đọc điều này vào một dataFrame cho bạn. Sau đó, bạn có thể lọc theo những hàng đó chứa dns.exe, v.v. Bạn có thể cần xác định tiêu đề của riêng mình

Dưới đây là một sự thay thế chung hơn cho read_csv nếu bạn muốn kiểm soát nhiều hơn. Tôi đã giả sử các cột của bạn đều được phân tách tab, nhưng bạn có thể cảm thấy tự do để thay đổi ký tự chia tách theo cách bạn muốn:

with open('filename','r') as logs: logs.readline() # skip header so you can can define your own. columns = ["Proto","Local Address","Foreign Address","State","PID", "Process"] formatted_logs = pd.DataFrame([dict(zip(columns,line.split('\t'))) for line in logs])

Sau đó bạn chỉ có thể lọc các hàng bằng cách

formatted_logs = formatted_logs[formatted_logs['Process'].isin(['dns.exe','lsass.exe', ...])]

Nếu bạn chỉ muốn tên quy trình, nó thậm chí còn đơn giản hơn. Cứ làm đi

processes = formatted_logs['Process'] # returns a Series object than can be iterated through

Nếu bạn đã viết chức năng truyền dữ liệu bên ngoài cho phần mềm ERP cho doanh nghiệp của mình, thì bạn chắc chắn đã bắt gặp các tiện ích tích hợp cho phép bạn tạo các tệp dữ liệu có thể được gửi đến các nhà cung cấp, chính phủ tiểu bang và bất kỳ ai khác có thể cần Để xử lý dữ liệu liên quan đến nhân viên trong tổ chức của bạn. Các tiện ích này là một tính năng rất tiện lợi làm cho dữ liệu như vậy chuyển một quá trình tương đối trơn tru và đơn giản.

Nhưng điều gì sẽ xảy ra nếu bạn hoặc một người phi kỹ thuật muốn xem lại dữ liệu? Mặc dù hầu hết các dữ liệu này thường là văn bản, nhưng nó thường không được viết ở định dạng dễ xử lý, như tệp CSV hoặc tệp được chọn theo tab. Và, mặc dù có thể kiểm tra trực tiếp các tệp này trong trình soạn thảo văn bản như BBedit hoặc Notepad ++, nhưng phải theo dõi các trường được phân phối không gian với các loại dữ liệu khác nhau được nối với nhau có thể gây nhầm lẫn. Với ý nghĩ đó, trong hướng dẫn lập trình Python ngày nay, chúng ta sẽ xem xét cách trích xuất văn bản từ các định dạng tệp khó sử dụng mã Python.

Đọc: 6 ides và biên tập mã Python tốt nhất6 Best Python IDEs and Code Editors

Text Scraping là gì?

Xóa văn bản là quá trình sử dụng chương trình hoặc tập lệnh để đọc dữ liệu từ bất kỳ luồng dữ liệu nào, chẳng hạn như tệp và sau đó biểu thị dữ liệu đó theo định dạng có cấu trúc có thể được quản lý hoặc xử lý dễ dàng hơn. Điều này thường được thực hiện bằng cách biểu thức thông thường (regex) và các công cụ lọc như grep. Tuy nhiên, các ngôn ngữ lập trình như C#, Python và PHP bao gồm các thư viện xử lý chuỗi mạnh mẽ giúp quá trình này dễ dàng hơn nhiều đối với một người có thể không thông thạo các biểu thức thông thường hoặc không muốn đầu tư thời gian cần thiết để trở nên thông thạo chúng.

Bài viết này sử dụng Python 3 cho các mẫu mã và cho rằng bạn, với tư cách là người đọc, có kiến ​​thức làm việc cơ bản về Python, nhưng các kỹ thuật này cũng có thể được thực hiện trong hầu hết các ngôn ngữ lập trình khác. Trước khi bạn bắt đầu, bạn có thể muốn đọc tổng quan về bài viết của chúng tôi về các biểu thức thường xuyên và Regex trong Python.

Dữ liệu phân tích cú pháp trong Python

Cạo văn văn bản hiệu quả có nghĩa là biết ở đâu, bên trong luồng dữ liệu, thông tin mà bạn đang tìm kiếm tồn tại. Nếu nguồn dữ liệu là mã HTML của trang web, bạn sẽ cần có khả năng xác định dễ dàng trong mã nguồn của nó. Nếu nguồn dữ liệu là một tệp sử dụng nhiều dòng cho một bản ghi dữ liệu, thì bạn sẽ cần biết các điểm bắt đầu và kết thúc của thông tin bạn cần. Không có một cơ chế cố định để tìm ra điều này. Bạn sẽ cần xem tệp để xem những gì, nếu có, các mẫu tồn tại trong dữ liệu.

Ví dụ: giả sử dữ liệu nguồn của bạn có nội dung mẫu bên dưới và thông tin này đại diện cho thông tin thanh toán bảo hiểm y tế cho mỗi nhân viên được bầu để có bảo hiểm y tế:

Lưu ý: Rất phổ biến đối với các trình chỉnh sửa văn bản được gói với Windows hoặc Mac OSX, chẳng hạn như Notepad hoặc Textedit, để sử dụng các phông chữ theo tỷ lệ theo mặc định. Điều này dẫn đến khó khăn trong việc cố gắng tìm ra một định dạng tệp. Định cấu hình các trình chỉnh sửa này để sử dụng phông chữ có chiều rộng cố định như chuyển phát nhanh mới hoặc sử dụng các trình chỉnh sửa như Notepad ++ cho Windows hoặc BBedit cho Mac OSX.

Thật dễ dàng để phân tích những thứ như tên, tên cuối cùng và số an sinh xã hội từ dữ liệu mẫu này. Nhưng hãy nói rằng vì lợi ích của ví dụ này, dữ liệu này có thể bị phá vỡ theo những cách sau:

Đọc: Các khóa học trực tuyến hàng đầu để học Python Top Online Courses to Learn Python

Thật dễ dàng để kết luận rằng một bản ghi thông tin duy nhất sẽ bao gồm các dữ liệu khác nhau từ các mục nằm rải rác giữa mỗi dòng màu đỏ trong hình trên. Trong trường hợp này, một bản ghi duy nhất sẽ bao gồm:

    • Số An sinh Xã hội (SSN)
    • Họ và họ, được phân định bởi một dấu phẩy
    • Hai số lượng số thay đổi theo mỗi nhân viên. Trong nhiều tệp đầu ra được tạo bởi phần mềm ERP, điều này có thể đề cập đến số tiền mà một nhân viên có thể đóng góp cho kế hoạch nghỉ hưu hoặc thanh toán cho lợi ích bảo hiểm. Đối với bài viết này, những điều này sẽ được cho là:
      • Một số tiền hàng tháng vô nghĩa của người Viking, được đại diện bởi điểm nổi bật màu vàng.
      • Một số tiền vô nghĩa của người Viking, được đại diện bởi điểm nổi bật màu cam.

Các tệp này có thể thay đổi hoàn toàn về định dạng và loại thông tin mà chúng chứa, nhưng nếu bạn biết cách nhìn vào tệp, bạn chắc chắn có thể rút ra những phần quan trọng mà bạn muốn đưa vào định dạng dễ sử dụng hơn. Điều này có thể bao gồm các mục nhân khẩu học như:

    • Số điện thoại
    • Địa chỉ email
    • Ngày sinh
    • Địa chỉ gửi thư về nhà
    • Thông tin phụ thuộc
    • Mã kế hoạch lợi ích

Nếu bạn có quyền truy cập vào thông tin của nhân viên trong ERP hoặc nếu doanh nghiệp của bạn cho phép bạn có quyền truy cập đó, bạn có thể kiểm tra thông tin của nhân viên để xác định số hoặc ký hiệu nào tương ứng với các mục bạn có thể thấy trong tệp do ERP tạo.

Lưu ý phần của tệp chỉ với hai dòng? Đó không phải là một lỗi đánh máy. Nó sẽ được sử dụng để chứng minh cách xử lý các yếu tố dữ liệu bị thiếu, đây là một vấn đề không quá phổ biến dường như tăng lên khi làm việc với dữ liệu như thế này.

Hãy nhớ rằng bạn cần có một số hiểu biết cơ bản về những gì tệp gốc thể hiện trước khi bạn có thể đưa ra quyết định thiết kế về dữ liệu nào có thể được rút ra. Đưa ra cách tệp mẫu được cho là đại diện cho các hồ sơ nhân viên cá nhân, có thể giả định một cách an toàn rằng mỗi hồ sơ nhân viên có thể được xác định bởi SSN (màu tím) hoặc tên (màu xanh lá cây). Với các giả định đó, các bản ghi có thể được phân định khi có sự thay đổi SSN từ dòng này sang dòng tiếp theo.

Vì ví dụ này được cho là đại diện cho thông tin thanh toán, người ta có thể tìm kiếm thêm thông tin về từng hồ sơ trong ERP và có khả năng kết luận rằng các con số được tô màu vàng có thể đại diện cho số tiền trong một tháng mà doanh nghiệp đã trả cho một công ty bảo hiểm y tế và Số màu cam là tổng số tiền.

Được cho rằng tôi chỉ tạo ra số cho ví dụ này, những con số này không nhằm thể hiện bất kỳ số tiền thực tế nào.

Với ý nghĩ đó, xin vui lòng lưu ý rằng, theo Cơ quan An sinh Xã hội Hoa Kỳ, bất kỳ số an sinh xã hội nào có 00 ở giữa hoặc 0000 ở cuối, đều không hợp lệ. Hướng dẫn lập trình Python này sẽ sử dụng các đại diện như vậy của các số an sinh xã hội cho mục đích thử nghiệm.

Đọc: Hướng dẫn đơn giản để xử lý tập tin trong Python A Simple Guide to File Handling in Python

Mục tiêu của phân tích dữ liệu phân tích cú pháp và trích xuất

Vì giới thiệu nêu rõ, sẽ rất tuyệt khi có các giá trị ở trên ở định dạng dễ sử dụng hơn, chẳng hạn như tệp CSV. Tuy nhiên, một khi các mẩu thông tin được rút ra, chúng có thể được lưu trong bất kỳ loại tệp dữ liệu có cấu trúc nào, chẳng hạn như tệp XML. Tuy nhiên, hầu hết người dùng cuối có nhu cầu kiểm tra thông tin này sẽ sử dụng một công cụ như Microsoft Excel hoặc ứng dụng số được gói trong Mac OSX để thực hiện phân tích đó.

Đối với mục đích của bài viết này, mục tiêu là dễ dàng biểu diễn thông tin trên trong tệp CSV chứa các dòng theo định dạng bên dưới:

SSN,Last Name,First Name,Monthly Amount,Yearly Amount

Xác định cấu trúc dữ liệu để xử lý chuỗi bằng Python

Để sử dụng các công cụ xử lý chuỗi trong hầu hết mọi ngôn ngữ lập trình, điều quan trọng là phải biết nơi mỗi hộp được tô sáng ở trên bắt đầu và có bao nhiêu ký tự theo nghĩa đen. Các trình chỉnh sửa văn bản như Notepad ++ cho Windows hoặc BBedit cho Mac OSX có chức năng tích hợp có thể giúp bạn xác định vị trí và kích thước bắt đầu của mỗi chữ. Lưu ý rằng cả cửa sổ BBEDIT và cửa sổ Notepad ++ đều bị thu hẹp cho các mục đích của ví dụ này:

Xác định vị trí và độ dài bằng cách sử dụng BBedit

Hình dưới đây cho thấy cách Notepad ++ sẽ cung cấp cùng một thông tin, mặc dù độ dài lựa chọn không xuất hiện cho đến khi văn bản thực sự được chọn:

Xác định các vị trí bằng Notepad ++

Xác định độ dài chuỗi theo nghĩa đen bằng Notepad ++

Trong ví dụ trên, SSN bắt đầu ở vị trí 13, giả sử chỉ số 1 cho vị trí ký tự bắt đầu từ bên trái. Điều này có thể được xác định bằng cách đặt con trỏ ở phía bên trái của dòng, trong trường hợp này, trước 4 trong 42594 và thấy rằng vị trí này là 1. Di chuyển con trỏ sang đầu SSN giúp bạn đến vị trí ký tự 13, như thể hiện trong thông tin trong vòng tròn màu đỏ bên trái. Chuột hoặc nút thay đổi có thể được sử dụng để chọn toàn bộ SSN, nhưng không phải bất kỳ không gian dấu vết nào đi trước hoặc theo nó. Bbedit sau đó cung cấp độ dài của văn bản đã chọn, cụ thể là 11 ký tự, bao gồm cả dấu gạch nối.13, assuming a 1-index for the character position starting from the left. This can be determined by placing the cursor at the leftmost side of the line, in this case, before the 4 in 42594, and seeing that this position is 1. Moving the cursor to the start of the SSN gets you to character position 13, as shown in the information in the red circle on the left. The mouse or Shift-Arrow can be used to select the whole of the SSN, but not any trailing spaces that precede or follow it. BBEdit then provides the length of the selected text, namely 11 characters, including the hyphens.

Một lưu ý quan trọng: Khi xác định các vị trí và độ dài của các chuỗi chuỗi, hãy đảm bảo rằng không có khoảng trống hoặc ký tự bên trái hoặc bên phải của văn bản được chọn, vì điều này sẽ mang lại các giá trị không chính xác.

Được trang bị thông tin này, chúng tôi có thể xác định rằng đối với một bản ghi nhất định, SSN có thể bắt đầu ở vị trí 13 và mở rộng cho 11 ký tự. Sử dụng các kỹ thuật tương tự, thông tin tương tự có thể được xác định cho các mục khác, mặc dù có một số cảnh báo.13 and extend for 11 characters. Using the same techniques, the same information can be determined for the other items, albeit with some caveats.

Ghi lại các thành phần

Màu sắc nổi bật

Vị trí bắt đầu (1 chỉ số)

Chiều dài chuỗi

SSN

Màu đỏ tía

13

11

Số tiền vô nghĩa hàng tháng

Màu vàng

52

6

Số tiền vô nghĩa hàng năm

Quả cam

58

5

Họ và họ

màu xanh lá

34

Thay đổi, nhưng có thể đi đến cuối dòng.

Kết luận về phần một của trích xuất văn bản trong Python

Bây giờ chúng tôi đã xác định được cấu trúc dữ liệu cơ bản của văn bản chúng tôi muốn phân tích cú pháp và trích xuất, chúng tôi có thể chuyển sang mã Python thực tế mà chúng tôi sẽ sử dụng để xóa dữ liệu từ một tệp. Đối với lợi ích của Brevity, chúng tôi sẽ trình bày mã đó trong một bài viết tiếp theo: Trích xuất văn bản bằng Python.

Đọc thêm Hướng dẫn phát triển phần mềm và lập trình Python.

Làm thế nào trích xuất dữ liệu cụ thể từ chuỗi trong Python?

Phương pháp số 1: Sử dụng split () Sử dụng hàm chia, chúng ta có thể chia chuỗi thành một danh sách các từ và đây là phương thức chung và được đề xuất nhất nếu người ta muốn hoàn thành nhiệm vụ cụ thể này. Nhưng nhược điểm là nó thất bại trong các trường hợp chuỗi chứa dấu chấm câu.Using split() Using the split function, we can split the string into a list of words and this is the most generic and recommended method if one wished to accomplish this particular task. But the drawback is that it fails in cases the string contains punctuation marks.

Làm cách nào để đọc một phần cụ thể của một tệp 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 cách nào để trích xuất một từ cụ thể từ một tệp trong Python?

Chúng ta có thể sử dụng các biểu thức thông thường trong Python để trích xuất các từ cụ thể từ một chuỗi.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ể có được từ bằng cách sử dụng cắt.use regular expressions in python to extract specific words from a string. We can use search() method from re module to find the first occurrence of the word and then we can obtain the word using slicing.

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.

Chủ đề