Hướng dẫn remove non numeric characters python list - loại bỏ các ký tự không phải là số trong danh sách python

Tôi đang tìm cách 'làm sạch' một danh sách bằng cách loại trừ bất kỳ mục nào có chứa các ký tự ngoài 0-9 và tự hỏi liệu có cách nào hiệu quả hơn so với ví dụ không.

import re
invalid = re.compile['[^0-9]']    
ls = ['1a', 'b3', '1']
cleaned = [i for i in ls if not invalid.search[i]]
print cleaned
>> ['1']

Vì tôi sẽ hoạt động trên các danh sách lớn [các mục 5K] của các chuỗi dài [15 ký tự].

Khi được hỏi ngày 17 tháng 5 năm 2011 lúc 11:26May 17, 2011 at 11:26

Có gì sai với phương thức chuỗi isdigit không?

>>> ls = ['1a', 'b3', '1']
>>> cleaned = [ x for x in ls if x.isdigit[] ]
>>> cleaned
['1']
>>>

Đã trả lời ngày 17 tháng 5 năm 2011 lúc 11:29May 17, 2011 at 11:29

MatthmatthMattH

36.1k11 Huy hiệu vàng81 Huy hiệu bạc84 Huy hiệu đồng11 gold badges81 silver badges84 bronze badges

2

Bạn có thể sử dụng chức năng Isnumeric. Nó kiểm tra xem chuỗi chỉ bao gồm các ký tự số. Phương pháp này chỉ có mặt trên các đối tượng Unicode. Nó sẽ không hoạt động với các giá trị số nguyên hoặc float

myList = ['text', 'another text', '1', '2.980', '3']
output = [ a for a in myList if a.isnumeric[] ]
print[ output ]      
# Output is : ['1', '3']

Tham khảo: //www.tutorialspoint.com/python/string_isnumeric.htm

Đã trả lời ngày 11 tháng 11 năm 2017 lúc 20:22Nov 11, 2017 at 20:22

Chào mừng đến với cộng đồng Treehouse

Cộng đồng Treehouse là nơi gặp gỡ cho các nhà phát triển, nhà thiết kế và lập trình viên của tất cả các nền tảng và cấp độ kỹ năng để nhận được hỗ trợ. Phối hợp ở đây về các lỗi mã hoặc lỗi mà bạn cần phản hồi hoặc yêu cầu thêm một bộ mắt về dự án mới nhất của bạn. Tham gia cùng hàng ngàn sinh viên Treehouse và cựu sinh viên trong cộng đồng ngày hôm nay. .

Tìm kiếm để học một cái gì đó mới?

Treehouse cung cấp một bản dùng thử miễn phí bảy ngày cho sinh viên mới. Nhận quyền truy cập vào hàng ngàn giờ nội dung và một cộng đồng hỗ trợ. Bắt đầu thử nghiệm miễn phí ngay hôm nay.

Xin lưu ý, tôi không có nghĩa là 'Kiểm tra xem một đối tượng chuỗi có phải là chữ số không', ví dụ '8'.

Danh sách:

my_list = [5, 2, 1, True, 'abcdefg', 3, False, 4]

Những gì tôi đã thử cho đến nay:

# Returns 'AttributeError: 'int' object has no attribute 'isDigit''
my_list = [x for x in my_list if x.isDigit[]]

# Returns 'ValueError: invalid literal for int[] with base 10: 'abcdefg''
my_list = [x for x in my_list if int[x]]

Tôi biết rằng trong JavaScript, mã sau đây sẽ đạt được những gì tôi muốn làm:

var my_list = [5, 2, 1, true, 'abcdefg', 3, false, 4]

var filtered = my_list.filter[function[item] {
  return !isNaN[parseFloat[item]] && isFinite[item]
}]

console.log[filtered];

Cảm ơn trước

2 câu trả lời

Đây là cách bạn sẽ làm điều đó:

my_list = [5, 2, 1, True, 'abcdefg', 3, False, 4]
my_list =  [x for x in my_list if type[x] == int]

hàm isDigit [] trả về đúng hoặc sai nếu chỉ có số trong ---> chuỗi không dành cho chính số nguyên, vì các phần tử của my_list cũng chứa các số nguyên ] .isDigit [].

Làm cách nào để loại bỏ không

Sử dụng phương thức re.sub [] để xóa tất cả các ký tự không phải là số từ một chuỗi, ví dụ: Kết quả = Re. sub [r '[^0-9]', '', my_str]. sub[] method to remove all non-numeric characters from a string, e.g. result = re. sub[r'[^0-9]', '', my_str] .

Làm cách nào để loại bỏ không

Để loại bỏ tất cả các ký tự không phải là số từ một chuỗi, chức năng thay thế [] được sử dụng.thay thế [] hàm: Hàm này tìm kiếm một chuỗi cho một giá trị cụ thể hoặc regexp và trả về một chuỗi mới nơi thực hiện thay thế.replace[] function is used. replace[] Function: This function searches a string for a specific value, or a RegExp, and returns a new string where the replacement is done.

Làm thế nào để bạn xóa các ký tự khỏi danh sách trong Python?

Phương thức Remove [] xóa phần tử khớp đầu tiên [được truyền dưới dạng đối số] khỏi danh sách.Phương thức pop [] loại bỏ một phần tử tại một chỉ mục nhất định và cũng sẽ trả về mục đã xóa.Bạn cũng có thể sử dụng từ khóa DEL trong Python để xóa một phần tử hoặc lát khỏi danh sách.. The pop[] method removes an element at a given index, and will also return the removed item. You can also use the del keyword in Python to remove an element or slice from a list.

Làm thế nào để bạn lọc các số không trong python?

Sử dụng re.sub [] để xóa tất cả các ký tự không phải là số từ một chuỗi.Gọi lại.Sub [mẫu, thay thế, chuỗi] bằng "[^0-9]" làm mẫu, chuỗi trống như thay thế và chuỗi dưới dạng chuỗi để trả về một bản sao của chuỗi bị tước của tất cả các ký tự không phải là số. sub[] to remove all non-numeric characters from a string. Call re. sub[pattern, replacement, string] with "[^0-9]" as pattern , the empty string as replacement , and the string as string to return a copy of the string stripped of all non-numeric characters.

Bài Viết Liên Quan

Chủ Đề