Tôi đang sử dụng python và gặp phải vấn đề trích xuất các phần tử cụ thể từ một chuỗi có một bộ gồm các số. Một điều cần lưu ý ở đây là bộ số trong một chuỗi không cố định và có thể nhiều hoặc ít. Định dạng của chuỗi sẽ giống như được đề cập dưới đây:
'chuỗi = [(100, 1), (2500, 2), (5000, 3), (10000, 3)...]'
Đầu ra mong muốn:
[100,2500,5000,10000....]
Những gì tôi đã thử:
Cho đến nay tôi đã thử tách chuỗi ở trên để có kết quả như sau
['chuỗi', '=', '(100', '1)', '(2500', '2)', '(5000', '3)', '(10000, '3)']
Sau đó tôi sẽ loại bỏ những ký tự không cần thiết, như (,'
để lấy số mình muốn, nhưng phương pháp này phải mã hóa cứng từng bộ dữ liệu và độ dài của các bộ dữ liệu trong chuỗi không cố định.
Bạn có thể sử dụng =
Tách văn bản để tìm danh sách các bộ dữ liệu và sau đó sử dụng ast.literaleval()
Đánh giá danh sách của bạn:
>>> next(zip(*literal_eval(s.split('=')[-1].strip())))
(100, 2500, 5000, 10000)
Xin lưu ý rằng vì trong python 2.X zip
Trả về một danh sách, bạn có thể sử dụng chỉ mục để lấy mục đầu tiên:
zip(*literal_eval(s.split('=')[-1].strip()))[0]
(100, 2500, 5000, 10000)
Tôi là một lập trình viên xuất sắc, rất giỏi!