Cách chỉ trích xuất các số từ một tệp trong Python

Trích xuất các chữ số hoặc số từ một chuỗi nhất định có thể xuất hiện khá thường xuyên trong hành trình mã hóa của bạn. Cho dù bạn đang tự động hóa tập lệnh trong python và bạn muốn trích xuất một số số nhất định từ tệp CSV hay bạn là nhà khoa học dữ liệu và bạn cần tách các chữ số và số liệu phức tạp khỏi các mẫu đã cho hoặc bạn là người đam mê trăn muốn tìm hiểu thêm về . Đã nói rằng, chúng ta hãy đi sâu vào câu hỏi quan trọng về sứ mệnh của mình

Vấn đề. Đưa ra một chuỗi;

Thí dụ. Giả sử rằng bạn đã được cung cấp một chuỗi và bạn muốn trích xuất tất cả các số từ chuỗi như đã cho trong ví dụ sau

Cho trước là chuỗi sau

Extract 100, 1000 and 10000 from this string

Đây là đầu ra mong muốn của bạn

[100, 1000, 10000]

Hãy để chúng tôi thảo luận về các phương pháp mà chúng tôi có thể sử dụng để trích xuất các số từ chuỗi đã cho

Phương pháp 1. Sử dụng mô-đun Regex

Cách tiếp cận hiệu quả nhất để giải quyết vấn đề của chúng ta là tận dụng sức mạnh của mô-đun

[100, 1000, 10000]
7. Bạn có thể dễ dàng sử dụng Biểu thức chính quy [_______18] để kiểm tra hoặc xác minh xem một chuỗi đã cho có chứa một mẫu được chỉ định hay không [có thể là một chữ số hoặc ký tự đặc biệt hoặc bất kỳ mẫu nào khác]

Do đó, để giải quyết vấn đề của chúng tôi, chúng tôi phải nhập mô-đun regex đã có trong thư viện chuẩn của Python và sau đó với sự trợ giúp của hàm

[100, 1000, 10000]
9, chúng tôi có thể trích xuất các số từ chuỗi đã cho

[100, 1000, 10000]
9 là một hàm regex dễ sử dụng trả về một danh sách chứa tất cả các kết quả khớp. Để tìm hiểu thêm về
[100, 1000, 10000]
9, hãy xem hướng dẫn blog của chúng tôi tại đây

Chúng ta hãy xem đoạn mã sau để hiểu cách chúng ta có thể sử dụng mô-đun

[100, 1000, 10000]
7 để giải quyết vấn đề của mình

________số 8

đầu ra

[100.0, 100.45, 10000.0]

Phương pháp 2. Tách và nối các số vào danh sách bằng hàm split[] và append[]

Một cách giải quyết khác cho vấn đề của chúng ta là tách chuỗi đã cho bằng cách sử dụng hàm

[100, 1000, 10000]
2, sau đó trích xuất các số bằng phương thức
import re

sentence = 'Extract 100 , 100.45 and 10000 from this string'
s = [float[s] for s in re.findall[r'-?\d+\.?\d*', sentence]]
print[s]
4 tích hợp, sau đó nối các số đã trích xuất vào danh sách

Ghi chú

  • import re
    
    sentence = 'Extract 100 , 100.45 and 10000 from this string'
    s = [float[s] for s in re.findall[r'-?\d+\.?\d*', sentence]]
    print[s]
    5 là một phương thức python tích hợp được sử dụng để tách một chuỗi thành một danh sách
  • import re
    
    sentence = 'Extract 100 , 100.45 and 10000 from this string'
    s = [float[s] for s in re.findall[r'-?\d+\.?\d*', sentence]]
    print[s]
    6 là một phương thức tích hợp sẵn trong python để thêm một mục vào cuối danh sách

Bây giờ chúng ta đã có các công cụ cần thiết để giải quyết vấn đề của mình dựa trên khái niệm trên, chúng ta hãy đi sâu vào mã để xem nó hoạt động như thế nào

[100, 1000, 10000]
4

đầu ra

[100.0, 100.45, 10000.0]

Phương pháp 3. Sử dụng hàm isdigit[] trong việc hiểu danh sách

Một cách tiếp cận khác để giải quyết vấn đề của chúng ta là sử dụng hàm có sẵn

[100, 1000, 10000]
4 để trích xuất các chữ số từ chuỗi rồi lưu trữ chúng trong danh sách bằng cách sử dụng khả năng hiểu danh sách. Hàm
[100, 1000, 10000]
4 được sử dụng để kiểm tra xem một chuỗi đã cho có chứa các chữ số không. Do đó, nếu nó tìm thấy một ký tự là một chữ số thì nó trả về True, ngược lại, nó trả về False

Chúng ta hãy xem đoạn mã dưới đây để xem khái niệm trên hoạt động như thế nào

[100, 1000, 10000]
8

đầu ra

[100, 1000, 10000]
9

☢ Cảnh báo. Kỹ thuật này phù hợp nhất để chỉ trích xuất các số nguyên dương. Nó sẽ không hoạt động đối với số nguyên âm, số float hoặc số thập lục phân

Phương pháp 4. Sử dụng số từ thư viện chuỗi

Đây là một thủ thuật nhanh nếu bạn muốn tránh mất thời gian gõ mã rõ ràng để trích xuất các số từ một chuỗi. Bạn có thể nhập một thư viện có tên là

import re

sentence = 'Extract 100 , 100.45 and 10000 from this string'
s = [float[s] for s in re.findall[r'-?\d+\.?\d*', sentence]]
print[s]
9 và sau đó sử dụng thư viện đó để trích xuất các số từ một chuỗi đã cho. Nó chứa một số quy tắc regex với phạm vi bao phủ toàn diện và có thể là một công cụ rất hữu ích cho các nhà nghiên cứu NLP

Vì thư viện Numbers from String không phải là một phần của thư viện Python tiêu chuẩn nên bạn phải cài đặt nó trước khi có thể sử dụng nó. Sử dụng lệnh sau để cài đặt thư viện hữu ích này

[100, 1000, 10000]
1

Chương trình sau minh họa việc sử dụng

import re

sentence = 'Extract 100 , 100.45 and 10000 from this string'
s = [float[s] for s in re.findall[r'-?\d+\.?\d*', sentence]]
print[s]
9

[100, 1000, 10000]
3

đầu ra

[100.0, 100.45, 10000.0]

Sự kết luận

Do đó, từ các cuộc thảo luận ở trên, chúng tôi thấy rằng có rất nhiều cách để trích xuất một số từ một chuỗi đã cho trong python. Mặc dù vậy, sở thích cá nhân của tôi chắc chắn sẽ là mô-đun regex. Bạn có thể lập luận rằng việc sử dụng các phương pháp khác như hàm

[100, 1000, 10000]
4 và
[100, 1000, 10000]
2 cung cấp mã đơn giản hơn, dễ đọc hơn và nhanh hơn. Tuy nhiên, như đã đề cập trước đó, nó không trả về các số âm [liên quan đến phương thức 2] và cũng không hoạt động đối với các số float không có khoảng cách giữa chúng và các ký tự khác như '25. 50k’ [tham khảo cách 2]. Hơn nữa, tốc độ là một số liệu không liên quan khi phân tích nhật ký. Bây giờ bạn đã hiểu tại sao regex là sở thích cá nhân của tôi trong danh sách các giải pháp này

Trong trường hợp bạn không ủng hộ thư viện re cho lắm, đặc biệt là vì bạn cảm thấy khó nắm vững khái niệm này [giống như tôi lúc đầu], đây là HƯỚNG DẪN để bạn trở thành bậc thầy về regex. ?

Tôi hy vọng bạn thấy bài viết này hữu ích và thêm một số giá trị cho hành trình viết mã của bạn. Hãy theo dõi để biết thêm nhiều điều thú vị trong tương lai

Đi đâu từ đây?

Đủ lý thuyết. Hãy thực hành một số

Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa

Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế

Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?

🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn

Tham gia hội thảo trên web miễn phí ngay bây giờ

Shubham Sayon

Tôi là một người tạo nội dung và Blogger Python chuyên nghiệp. Tôi đã xuất bản nhiều bài báo và tạo các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc với tư cách là một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Networking

Làm cách nào để trích xuất số từ tệp văn bản trong Python bằng biểu thức chính quy?

Python Regex – Lấy danh sách tất cả các số từ chuỗi. Để lấy danh sách tất cả các số trong Chuỗi, sử dụng biểu thức chính quy '[0-9]+' với re. phương thức findall[] . [0-9] đại diện cho một biểu thức chính quy để khớp với một chữ số trong chuỗi.

Làm cách nào để trích xuất dữ liệu cụ thể 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 .
Đảm bảo bạn đang sử dụng Python 3
Đọc dữ liệu 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 chính quy
Để tất cả chúng cùng nhau

Chủ Đề