Làm thế nào để bạn có được số từ văn bản trong python?

Bắt đầu bằng cách suy nghĩ về cách bạn sẽ thực hiện thủ công. bạn sẽ tìm phần đầu của một số, sau đó xử lý từng chữ số cho đến khi bạn tìm thấy phần cuối, sau đó quay lại tìm phần đầu của một số. Khi bạn đi đến cuối cùng, bạn sẽ quyết định có nên giữ lại số hay không nếu nó có số chín. Vì vậy, hãy nghĩ về điều đó và cách bạn có thể tự động hóa nó

Nếu bạn đang gặp vấn đề khi bắt đầu, thì điều này có thể giúp ích. Cách viết mã để giải quyết vấn đề, Hướng dẫn cho người mới bắt đầu[^]

Thêm giải pháp của bạn ở đây

 B   I   U   S  small BIG code

>>> x = "23.4"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23.4'
9  <   >   &  link [^] encode untab case indent outdent

Xem trước 0

thành viên hiện tại

hoặc tham gia với chúng tôi

Tải xuống, Bình chọn, Nhận xét, Xuất bản

Email của bạn

Email này đang được sử dụng. Bạn có cần mật khẩu của bạn?

Mật khẩu tùy chọn

Khi trả lời câu hỏi, vui lòng.

  1. Đọc kỹ câu hỏi.
  2. Hiểu rằng tiếng Anh không phải là ngôn ngữ đầu tiên của mọi người, vì vậy hãy khoan dung với lỗi chính tả và ngữ pháp
  3. Nếu một câu hỏi được diễn đạt kém thì hãy yêu cầu làm rõ, bỏ qua nó hoặc chỉnh sửa câu hỏi và khắc phục sự cố. Xúc phạm không được chào đón
  4. Đừng bảo ai đó đọc hướng dẫn. Rất có thể họ có và không nhận được. Đưa ra câu trả lời hoặc chuyển sang câu hỏi tiếp theo
Let's work to help developers, not make them feel stupid.


Nội dung này, cùng với bất kỳ tệp và mã nguồn liên quan nào, được cấp phép theo Giấy phép Mở Dự án Code (CPOL)

Python cho phép bạn chuyển đổi chuỗi, số nguyên và số float thay thế cho nhau theo một số cách khác nhau. Cách đơn giản nhất để thực hiện việc này là sử dụng các hàm cơ bản

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
6,
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
7 và
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
8. Ngoài ra, còn có một số cách khác, chẳng hạn như hàm
>>> x = "23.4"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23.4'
9. Chỉ cần lưu ý rằng các hàm
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
7,
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
8 và
>>> x = "23a"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23a'
6 có những giới hạn của chúng và có thể đưa ra các ngoại lệ nếu chuỗi đầu vào không được định dạng chính xác như chúng mong đợi

Để lấy danh sách tất cả các số trong Chuỗi, hãy 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. [0-9]+ đại diện cho các chuỗi chữ số liên tục có độ dài bất kỳ

numbers = re.findall('[0-9]+', str)

trong đó str là chuỗi mà chúng ta cần tìm các số. lại. findall() trả về danh sách các chuỗi khớp với biểu thức chính quy

ví dụ 1. Lấy danh sách tất cả các số trong Chuỗi

Trong ví dụ sau, chúng ta sẽ lấy một chuỗi,

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
0, và tìm tất cả các số,
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
1, có trong chuỗi

Chương trình Python

import re

str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall('[0-9]+', str)
print(x)
Chạy

đầu ra

['9', '162', '666688888']

ví dụ 2. Lấy danh sách tất cả các chữ số liên tục trong Chuỗi

Trong ví dụ sau, chúng tôi sẽ lấy một chuỗi,

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
2 và tìm tất cả các số,
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
3, có trong chuỗi

Chương trình Python

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
0Chạy

đầu ra

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
1

Tóm lược

Trong hướng dẫn về Ví dụ Python này, chúng ta đã học cách lấy tất cả các số tạo thành một chuỗi dưới dạng danh sách, sử dụng Biểu thức chính quy Python, với sự trợ giúp của các chương trình ví dụ

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;

Ví 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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
2

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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
3

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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
37. Bạn có thể dễ dàng sử dụng Biểu thức chính quy (_______138) để 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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
39, chúng tôi có thể trích xuất các số từ chuỗi đã cho

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
39 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ề
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
39, 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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
37 để giải quyết vấn đề của mình

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
0

đầu ra

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
1

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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
32, sau đó trích xuất các số bằng phương thức
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
04 tích hợp, sau đó nối các số đã trích xuất vào danh sách

Ghi chú

  • >>> integerFirst = 23
    >>> floatFirst = 23.23
    >>> complextFirst = 1 + 23j
    
    05 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
  • >>> integerFirst = 23
    >>> floatFirst = 23.23
    >>> complextFirst = 1 + 23j
    
    06 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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
6

đầu ra

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
1

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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
34 để trích xuất các chữ số từ chuỗi và sau đó 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
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
34 đượ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

>>> x = "23.4"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23.4'
0

đầu ra

>>> x = "23.4"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23.4'
1

☢ 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à

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
09 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

>>> x = "23.4"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23.4'
3

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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
09

>>> x = "23.4"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23.4'
5

đầu ra

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
1

Phần 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 thức khác như hàm

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
34 và
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
32 sẽ 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ề biểu thức chính quy. ?

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ờ

Làm thế nào để bạn có được số từ văn bản trong python?

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