Cách trích xuất chỉ các số từ danh sách trong python

Chuỗi là một mảng byte đại diện cho các ký tự Unicode được đặt trong dấu nháy đơn, kép hoặc ba. Các ký tự kèm theo có thể là chữ số, bảng chữ cái hoặc ký hiệu đặc biệt. Chuỗi chỉ là một văn bản bình thường và con người có thể đọc được. Các chuỗi là bất biến trong Python. Điều đó có nghĩa là một khi đối tượng chuỗi được xác định thì không thể thay đổi nó

Ở đây chúng ta sẽ có một chuỗi được tạo thành từ các số và bảng chữ cái,

string_var = 'MSD scored 10773  runs in ODI cricket at the avg of 50 in 350 matched.'

# type() will print data type of string_var
print(type(string_var))

ĐẦU RA

quảng cáo

<class 'str'>

Bạn có thể thấy chúng tôi có một chuỗi với một số số trong đó. Công việc của chúng ta là trích xuất những con số đó bằng ngôn ngữ lập trình python

Trích xuất các số từ chuỗi bằng cách sử dụng isdigit() trong Danh sách hiểu

Trong phương pháp này, chúng ta sẽ sử dụng kết hợp ba phương thức khác nhau để trích xuất số từ một chuỗi đã cho. Phương thức List Comprehension, isdigit() và split() là ba phương thức khác nhau

Khả năng hiểu danh sách là một cú pháp ngắn hơn dựa trên điều kiện mà qua đó bạn có thể lọc các giá trị trong một danh sách mới. Ở đây trong phương pháp này,

  • Phương thức split() chuyển đổi chuỗi thành danh sách các chuỗi con
  • Danh sách hiểu lặp lại danh sách chuỗi con này,
  • Trong quá trình lặp lại các chuỗi con, phương thức isdigit() giúp kiểm tra các chữ số

Điều này chúng ta có thể trích xuất tất cả các số từ một chuỗi trong danh sách. Hãy xem ví dụ hoàn chỉnh,

THÍ DỤ

string_var = 'MSD scored 10773  runs in ODI cricket at the avg of 50.58 in 350 matched.'

numbers = [int(new_string) for new_string in str.split(string_var) if new_string.isdigit()]

print(numbers)

# type() will print data type of string_var
print(type(numbers))

ĐẦU RA

[10773, 350]
<class 'list'>

Ở đây bạn có thể thấy với sự kết hợp của ba phương pháp khác nhau, chúng tôi đã trích xuất thành công các số từ một chuỗi. Nhưng phương pháp này có một lỗ hổng là bạn có thể thấy nó không in ra avg, thuộc kiểu dữ liệu float

Trích xuất số từ chuỗi bằng re. phương thức findall()

Bây giờ chúng ta sẽ sử dụng phương thức findall() của regex module trong Python. Mô-đun re là viết tắt của Cụm từ thông dụng, đi kèm với thư viện python

Nó sử dụng ký tự gạch chéo ngược ('\') để biểu thị các dạng đặc biệt. Ở đó. findall() quét chuỗi đã cho từ trái sang phải và kiểm tra xem chuỗi đã cho có mẫu được chỉ định có thể ở dạng chữ số hoặc bất kỳ loại dữ liệu nào khác không. Nó trả về một danh sách với tất cả các giá trị phù hợp. Hãy xem một ví dụ

THÍ DỤ

import re

string_var = 'MSD scored 10773  runs in ODI cricket at the avg of 50.58 in 350 matched.'

x = [float(x) for x in re.findall(r'-?\d+\.?\d*',string_var)]

print(x)

ĐẦU RA

[10773.0, 50.58, 350.0]

Trong ví dụ trên, bạn có thể thấy sử dụng re. findall() đã trả về tất cả các số trong str_var trong danh sách x bằng cách sử dụng tính năng Hiểu danh sách

Trích xuất các số từ chuỗi bằng các phương thức split() và append()

Một cách khác mà chúng ta có thể trích xuất các số từ một chuỗi đã cho là sử dụng kết hợp hàm split() và append(). Trong phương thức này, chúng ta sẽ sử dụng phương thức split() để tách chuỗi đã cho và nối nó vào danh sách

  • tách ra(). Hàm tích hợp sẵn của python được sử dụng để tách chuỗi thành danh sách
  • nối thêm (). Chức năng tích hợp sẵn của python được sử dụng để thêm một mục vào cuối danh sách

Hãy xem một ví dụ về phương pháp này

THÍ DỤ

string_var = 'MSD scored 10773  runs in ODI cricket at the avg of 50.58 in 350 matched.'
x = []

# Iterate over the words in a string
for i in string_var.split():
    try:
        # Convert word to float and add in list
        x.append(float(i))
    except ValueError :
        pass

print(x)

ĐẦU RA

[10773.0, 50.58, 350.0]

Trong ví dụ trên, bạn có thể thấy cách chúng tôi sử dụng cả hai phương thức split() và append() để trích xuất các số từ str_var. Ở đây chúng tôi luôn ngoại trừ một ValueError. Nếu try và except không được sử dụng ở đây, thì nó sẽ báo lỗi như thế này

________số 8

Về cơ bản, chúng tôi đã lặp lại tất cả các từ trong một chuỗi và với mỗi từ, chúng tôi đã chuyển đổi nó thành float và thêm vào danh sách. Nếu bất kỳ từ nào không phải là số thì float() sẽ đưa ra lỗi mà chúng tôi đã bắt và bỏ qua

Trích xuất số từ chuỗi bằng thư viện nums_from_string

Phương thức tiếp theo mà chúng ta sẽ sử dụng là hàm get_nums() của thư viện nums_from_string. Thư viện này không đi kèm với Python, vì vậy chúng tôi phải cài đặt nó. Chỉ cần gõ pip install nums from_string trong thiết bị đầu cuối của bạn. Sau khi cài đặt, đây là phương pháp đơn giản nhất để chúng ta có thể trích xuất các số từ chuỗi

Nhìn mã dưới đây

THÍ DỤ

import nums_from_string

string_var = 'MSD scored 10773  runs in ODI cricket at the avg of 50.58 in 350 matched.'
print(nums_from_string.get_nums(string_var))

ĐẦU RA

<class 'str'>
0

Bạn có thể thấy trong ví dụ trên thông qua nums_from_string, chúng ta có thể trích xuất thành công các số từ chuỗi mà không chỉ định bất kỳ loại dữ liệu nào như float hoặc int, v.v.

Bản tóm tắt

Vì vậy, chúng ta đã thấy bốn phương pháp khác nhau mà qua đó chúng ta có thể trích xuất các số từ một chuỗi trong Python. Phương pháp đơn giản nhất là get_nums(), đây là một chức năng của thư viện nums_from_string. Nhược điểm duy nhất của nó là nó không đi kèm với python và bạn phải cài đặt nó. Các phương thức khác như isdigit() có thể không hữu ích vì nó không trích xuất các số kiểu float. Trong phương pháp 3, bạn phải xử lý lỗi nếu không nó sẽ ném ValueError. Chúng tôi đã sử dụng Python 3. 10. 1 để viết mã ví dụ. Để kiểm tra phiên bản của bạn, hãy viết python –version trong thiết bị đầu cuối của bạn

Hướng dẫn về Pandas -Tìm hiểu Phân tích dữ liệu với Python

 
  • Hướng dẫn Pandas Phần #1 - Giới thiệu về Phân tích dữ liệu với Python
  • Hướng dẫn Pandas Phần #2 - Khái niệm cơ bản về Pandas Series
  • Hướng dẫn Pandas Phần #3 - Nhận & Đặt giá trị chuỗi
  • Pandas Tutorial Part #4 - Thuộc tính & phương thức của Pandas Series
  • Hướng dẫn về Pandas Phần #5 - Thêm hoặc xóa các thành phần của Pandas Series
  • Hướng dẫn về Pandas Phần #6 - Giới thiệu về DataFrame
  • Hướng dẫn về Pandas Phần #7 - DataFrame. loc[] - Chọn Hàng/Cột theo Lập chỉ mục
  • Hướng dẫn về Pandas Phần #8 - DataFrame. iloc[] - Chọn Hàng/Cột theo Tên nhãn
  • Hướng dẫn về gấu trúc Phần #9 - Lọc các hàng trong khung dữ liệu
  • Hướng dẫn Pandas Phần #10 - Thêm/Xóa Hàng & Cột DataFrame
  • Hướng dẫn về Pandas Phần #11 - Các thuộc tính & phương thức DataFrame
  • Hướng dẫn Pandas Phần #12 - Xử lý dữ liệu bị thiếu hoặc giá trị NaN
  • Hướng dẫn về Pandas Phần #13 - Lặp lại các Hàng & Cột của DataFrame
  • Hướng dẫn Pandas Phần #14 - Sắp xếp DataFrame theo Hàng hoặc Cột
  • Hướng dẫn về gấu trúc Phần #15 - Hợp nhất hoặc ghép các khung dữ liệu
  • Hướng dẫn về Pandas Phần #16 - DataFrame GroupBy được giải thích bằng các ví dụ
 

Bạn đang muốn tạo dựng sự nghiệp trong Khoa học dữ liệu với Python?

Khoa học dữ liệu là tương lai và tương lai là ở đây ngay bây giờ. Các nhà khoa học dữ liệu hiện là những chuyên gia được tìm kiếm nhiều nhất hiện nay. Để trở thành một Nhà khoa học dữ liệu giỏi hoặc để chuyển đổi nghề nghiệp trong Khoa học dữ liệu, người ta phải sở hữu bộ kỹ năng phù hợp. Chúng tôi đã tuyển chọn danh sách Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python. Các khóa học này sẽ dạy cho bạn các công cụ lập trình cho Khoa học dữ liệu như Pandas, NumPy, Matplotlib, Seaborn và cách sử dụng các thư viện này để triển khai các mô hình Máy học

Kiểm tra Đánh giá chi tiết về Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python

Hãy nhớ rằng, Khoa học dữ liệu đòi hỏi rất nhiều kiên nhẫn, bền bỉ và thực hành. Vì vậy, hãy bắt đầu học ngay hôm nay