Trích xuất văn bản python từ chuỗi

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 lợi ích, chính quyền tiểu bang và bất kỳ ai khác có thể cần . Các tiện ích này là một tính năng rất tiện lợi giúp cho việc truyền dữ liệu như vậy trở thành một quy trình tương đối trơn tru và đơn giản

Nhưng nếu bạn hoặc một người không chuyên về kỹ thuật muốn xem lại dữ liệu thì sao? . 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 việc theo dõi các trường được phân cách bằng dấu cách với các loại dữ liệu khác nhau được nhóm lại cạnh nhau có thể gây nhầm lẫn. Với ý nghĩ đó, trong hướng dẫn lập trình Python hôm 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 Trình chỉnh sửa mã và IDE Python tốt nhất

Quét văn bản là gì?

Quét 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, sau đó biểu thị dữ liệu đó ở định dạng có cấu trúc để có thể 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 biểu thức chính quy [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 trở nên dễ dàng hơn nhiều đối với những người không thông thạo các biểu thức chính quy hoặc những người 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à giả sử rằng bạn, với tư cách là người đọc, có kiến ​​thức cơ bản về Python, nhưng những 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ắt đầu, bạn có thể muốn đọc bài viết của chúng tôi Tổng quan về Biểu thức chính quy và Regex trong Python

Phân tích dữ liệu trong Python

Quét văn bản hiệu quả có nghĩa là biết vị trí, 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 một trang web, bạn cần có khả năng dễ dàng xác định mã đó 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 cần biết điểm bắt đầu và điểm kết thúc của thông tin bạn cần. Không có một cơ chế cố định nào để tìm ra điều này. Bạn sẽ cần xem tệp để xem các mẫu tồn tại trong dữ liệu, nếu có.

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 từng nhân viên đã chọn tham gia bảo hiểm y tế

Ghi chú. Rất phổ biến đối với các trình soạn thảo văn bản đi kèm với Windows hoặc Mac OSX, chẳng hạn như Notepad hoặc TextEdit, tương ứng, sử dụng phông chữ tỷ lệ theo mặc định. Điều này dẫn đến khó khăn hơn trong việc cố gắng tìm ra đị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ư Courier New hoặc sử dụng các trình chỉnh sửa như Notepad++ cho Windows hoặc BBEdit cho Mac OSX

Khá dễ dàng để phân tích những thứ như tên, họ và Số an sinh xã hội từ dữ liệu mẫu này. Nhưng nói rằng vì lợi ích của ví dụ này, dữ liệu này có thể được chia nhỏ theo các cách sau

Đọc. Các khóa học trực tuyến hàng đầu để học Python

Thật dễ dàng để kết luận rằng một bản ghi thông tin sẽ bao gồm nhiều 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 sẽ bao gồm

    • Số An Sinh Xã Hội [SSN]
    • Tên và Họ, được phân cách bằng dấu phẩy
    • Hai số tiền thay đổi theo từng 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à nhân viên có thể đóng góp cho kế hoạch nghỉ hưu hoặc trả tiền bảo hiểm. Đối với bài viết này, chúng sẽ được coi là
      • Số tiền hàng tháng “vô nghĩa”, được biểu thị bằng phần đánh dấu màu vàng
      • Một số tiền “vô nghĩa” hàng năm, được thể hiện bằng phần đánh dấu màu cam

Các tệp này có thể khác nhau 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 xem tệp, bạn chắc chắn có thể loại bỏ 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ư tại nhà
    • Thông tin phụ thuộc
    • Mã chương trình phúc lợi

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ỉ có hai dòng? . Nó sẽ được sử dụng để minh họa cách xử lý các phần tử dữ liệu bị thiếu, đây là một vấn đề không quá phổ biến dường như phát sinh 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ề nội dung của tệp gốc trước khi bạn có thể đưa ra quyết định thiết kế về dữ liệu nào có thể được lấy ra. Dựa vào cách tệp mẫu được cho là đại diện cho các bản ghi nhân viên riêng lẻ, có thể giả định một cách an toàn rằng mỗi bản ghi nhân viên có thể được xác định bằng SSN [màu tím] hoặc tên [màu xanh lá cây]. Với những giả định đó, các bản ghi có thể được phân định khi có sự thay đổi về 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ể tra cứu thêm thông tin trên từng bản ghi trong ERP và có khả năng kết luận rằng những con số được đánh dấu 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 sức khỏe và

Cho rằng tôi chỉ tạo ra các con số cho ví dụ này, những con số này không nhằm mục đích đại diện cho bất kỳ số tiền thực tế nào

Với ý nghĩ đó, xin 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 biểu diễn Số An sinh Xã hội như vậy cho mục đích thử nghiệm

Đọc. Hướng dẫn đơn giản để xử lý tệp trong Python

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

Như phần giới thiệu nêu rõ, thật tuyệt nếu 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 lấy 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 Numbers đi kèm 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 trình bày thông tin ở trên trong tệp CSV chứa các dòng tuân 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 mỗi ô được đánh dấu ở trên bắt đầu từ đâu và độ dài của văn bản là bao nhiêu ký tự. Các trình soạn thảo văn bản như Notepad++ cho Windows hoặc BBEdit cho Mac OSX có chức năng tích hợp sẵn có thể giúp bạn xác định vị trí bắt đầu và kích thước của từng chữ. Lưu ý rằng cả cửa sổ BBEdit và cửa sổ Notepad++ đều được thu nhỏ cho mục đích của ví dụ này

Xác định vị trí và độ dài bằng BBEdit

Hình bên dưới cho thấy Notepad++ sẽ cung cấp thông tin tương tự như thế nào, 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 vị trí bằng Notepad ++

Xác định độ dài chuỗi ký tự 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 ngoài cùng bên trái của dòng, trong trường hợp này, trước số 4 trong 42594 và thấy rằng vị trí này là 1. Di chuyển con trỏ đến đầu SSN sẽ đưa bạn đến vị trí ký tự 13, như được hiển thị trong thông tin trong vòng tròn màu đỏ bên trái. Chuột hoặc Shift-Mũi tên có thể được sử dụng để chọn toàn bộ SSN, nhưng không phải bất kỳ dấu cách nào ở trước hoặc sau 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

Một lưu ý quan trọng. khi xác định vị trí và độ dài của chuỗi ký tự, đảm bảo rằng không có dấu cách hoặc ký tự không liên quan ở 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 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à kéo dài 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ố lưu ý

Thành phần bản ghi

Màu nổi bật

Vị trí bắt đầu [1 chỉ mục]

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 hàng năm vô nghĩa

Quả cam

58

5

Họ và Tên

màu xanh lá

34

Khác nhau, nhưng có thể đi đến cuối dòng

Kết luận cho Phần một của Trích xuất văn bản trong Python

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

Chủ Đề