Số nguyên cắt Python

Nếu bạn có một chuỗi chứa các số và bạn muốn lấy các số đó ra, bạn có thể sử dụng các hàm có sẵn trong Python int[], isdigit[] để trích xuất các giá trị số nguyên từ chuỗi. Trong bài đăng này, chúng tôi sẽ chỉ cho bạn nhiều phương pháp để làm điều đó

đầu ra

Integer values in string are:  [100, 120, 10]

Giải pháp 1. Sử dụng split[], isdigit[] và hiểu Danh sách

Đưa ra một chuỗi, nhiệm vụ là chỉ trích xuất các số nguyên từ chuỗi và in chúng. Điều này có thể được thực hiện bằng cách sử dụng phương thức split[] và phương thức isdigit[]. Phương thức split[] trả về một danh sách các chuỗi con được phân tách bằng một dấu phân cách nhất định. Phương thức isdigit[] trả về True nếu tất cả các ký tự trong chuỗi là chữ số và có ít nhất một ký tự, ngược lại là False

Khả năng hiểu danh sách có thể được sử dụng để lặp lại danh sách được trả về bởi phương thức split[] và phương thức isdigit[] để kiểm tra xem mỗi chuỗi con có phải là một chữ số hay không. Nếu nó là một chữ số, thì nó có thể được thêm vào danh sách. Cuối cùng, danh sách các số nguyên có thể được in

Mã ví dụ 1

my_str = "There are 10 rabbits, 50 dogs and 20 cats in this area 52"

result = [int[x] for x in my_str.split[] if x.isdigit[]]

print[result]

đầu ra

[10, 50, 20, 52]

Đoạn mã trên đặt biến my_str thành một chuỗi chứa số và từ. Sau đó, nó sử dụng khả năng hiểu danh sách để tạo một danh sách mới, kết quả, chỉ chứa các số từ my_str, được chuyển đổi thành số nguyên. Cuối cùng, nó in nội dung của kết quả

Mã ví dụ 2. không sử dụng split[] - Điều này có thể hữu ích khi bạn không có khoảng trắng giữa số và từ

my_str = "abc1de4fg8ij5k7"

result = [int[x] for x in my_str if x.isdigit[]]

print[result]

đầu ra

[1, 4, 8, 5, 7]

Giải pháp 2. Sử dụng vòng lặp For

Chúng ta cũng có thể sử dụng vòng lặp Python For để lặp qua các từ và ký tự của chuỗi và có thể trích xuất các giá trị nguyên từ nó. Dưới đây là một số ví dụ mã sẽ giúp bạn hiểu nó

Ví dụ 1. Sử dụng vòng lặp for và split

my_str = "There are 10 rabbits, 50 dogs and 20 cats in this area 52"

result = []

for x in my_str.split[]:
    if[x.isdigit[]]:
        result.append[int[x]]
    
print[result]

đầu ra

[10, 50, 20, 52]

ví dụ 2. Không sử dụng hàm split[]

my_str = "There are 10 rabbits, 50 dogs and 20 cats in this area 52"

result = []

for x in my_str:
    if[x.isdigit[]]:
        result.append[int[x]]
    
print[result]

đầu ra

________số 8

ví dụ 3

input_str = "abc1de4fg8ij5k7"

r = []
for x in input_str:
    if x.isdigit[]:
        r.append[int[x]]
    
print[r]

đầu ra

[1, 4, 8, 5, 7]

Giải pháp 3. Sử dụng hàm findall[] của mô-đun regex re

Mô-đun re trong python có hàm findall[] có thể được sử dụng để trích xuất các giá trị số nguyên từ một chuỗi. Hàm findall[] trả về danh sách tất cả các kết quả phù hợp mà nó tìm thấy. Chuỗi có thể là chuỗi ký tự hoặc biểu thức chính quy. Nếu bạn chỉ muốn trích xuất các số nguyên dương, bạn có thể sử dụng biểu thức chính quy sau. [1-9][0-9]*

my_str = "There are 10 rabbits, 50 dogs and 20 cats in this area 52"

result = [int[x] for x in my_str.split[] if x.isdigit[]]

print[result]
1

đầu ra

my_str = "There are 10 rabbits, 50 dogs and 20 cats in this area 52"

result = [int[x] for x in my_str.split[] if x.isdigit[]]

print[result]
2

Trong ví dụ mã trên

  1. Dòng đầu tiên nhập mô-đun 're' cung cấp các công cụ biểu thức chính quy
  2. Dòng thứ hai định nghĩa một biến chuỗi gọi là mystr
  3. Dòng thứ ba sử dụng hàm findall[] từ mô-đun 're' để tìm tất cả các trường hợp có một hoặc nhiều chữ số trong chuỗi và lưu trữ chúng trong biến 'kết quả'
  4. Dòng thứ tư chuyển đổi biến 'kết quả' từ danh sách chuỗi thành danh sách số nguyên
  5. Dòng thứ năm in danh sách các số nguyên mới

Sử dụng các hàm filter[], map[] và isdigit[]

Trong Python, phương thức isdigit[] dùng để kiểm tra xem chuỗi đã cho có phải là chữ số hay không. Hàm này được sử dụng cùng với các hàm map[] và filter[] để chỉ trích xuất các giá trị số nguyên từ một chuỗi. Hàm map[] áp dụng hàm isdigit[] cho từng phần tử của iterable đã cho [i. e. danh sách, bộ dữ liệu, v.v. ] và trả về danh sách kết quả. Hàm filter[] lọc khả năng lặp đã cho bằng cách loại bỏ các phần tử mà phương thức isdigit[] trả về Sai

Như vậy, để chỉ trích xuất các giá trị nguyên từ một chuỗi, chúng ta cần sử dụng các hàm map[] và filter[] cùng với phương thức isdigit[]

my_str = "There are 10 rabbits, 50 dogs and 20 cats in this area 52"

result = [int[x] for x in my_str.split[] if x.isdigit[]]

print[result]
3

đầu ra

my_str = "There are 10 rabbits, 50 dogs and 20 cats in this area 52"

result = [int[x] for x in my_str.split[] if x.isdigit[]]

print[result]
4

Trong ví dụ mã trên, hàm map[] áp dụng hàm int cho mọi phần tử trong danh sách my_str. Hàm bộ lọc kiểm tra xem mọi phần tử trong danh sách my_str có phải là một chữ số hay không và trả về một danh sách chỉ gồm các phần tử chữ số. Cuối cùng, chức năng in in ra danh sách kết quả

Chủ Đề