13
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
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 [].