tôi có các chuỗi mà trông như thế này:Phân tích một chuỗi đại diện cho một danh sách các hàng
"(8, 12.25), (13, 15), (16.75, 18.5)"
và tôi muốn chuyển đổi mỗi trong số họ thành một cấu trúc dữ liệu python. Tốt hơn là một danh sách (hoặc bộ tuple) các bộ dữ liệu chứa một cặp giá trị float.
Tôi có thể làm điều đó với eval("(8, 12.25), (13, 15), (16.75, 18.5)")
cho tôi một bộ tuple, nhưng tôi không nghĩ rằng việc đánh giá một cách ngây thơ thông tin bên ngoài sẽ là một quyết định khôn ngoan.
Vì vậy, tôi tự hỏi một giải pháp thanh tao có thể trông như thế nào.
jfyi, điều này có thể không được mạnh mẽ để có một đơn Nếu bạn nhập là "(8, 12,25)". Bạn sẽ chỉ nhận được một tuple thay vì một tuple trong một tuple. Tôi tin rằng bạn sẽ nhận được tuple lồng nhau mong muốn nếu đầu vào là "(8, 12.25), "(lưu ý dấu phẩy sau). Nhưng tôi đã không kiểm tra điều này vì tôi không cài đặt python 2.6 trên máy này. – Tom
Tốt bắt Tom. Tôi chưa nghĩ về điều đó và nó thực sự sẽ là một vấn đề trong tình hình của tôi, tôi sẽ kiểm tra điều đó sau khi phân tích cú pháp. là không có sẵn trong python2.5 nhưng trong trường hợp của tôi đó là ok như tôi đang sử dụng nó trong một tập lệnh nhập dữ liệu công cụ ứng dụng và không có trong bản thân công cụ ứng dụng. – tosh
+1: Không biết 'ast.literal_eval' trước đây - và nó rất tiện dụng! –