Trong Python, làm cách nào tôi có thể phân tích một chuỗi số như "545.2222" thành giá trị float tương ứng của nó, 542.2222? Hoặc phân tích chuỗi "31" thành một số nguyên, 31?
Tôi chỉ muốn biết làm thế nào để phân tích một chuỗi float thành một float và (riêng) một chuỗi int thành một int.
Thật tốt khi bạn yêu cầu làm những việc này một cách riêng biệt. Nếu bạn trộn chúng, bạn có thể tự đặt ra vấn đề sau này. Câu trả lời đơn giản là:
"545.2222"
để nổi:
>>> float("545.2222")
545.2222
"31"
đến một số nguyên:
>>> int("31")
31
Chuyển đổi khác, ints đến và từ chuỗi và chữ:
Chuyển đổi từ các cơ sở khác nhau và bạn nên biết trước cơ sở (10 là mặc định). Lưu ý rằng bạn có thể đặt tiền tố cho chúng với những gì Python mong đợi cho chữ của nó (xem bên dưới) hoặc xóa tiền tố:
>>> int("0b11111", 2)
31
>>> int("11111", 2)
31
>>> int('0o37', 8)
31
>>> int('37', 8)
31
>>> int('0x1f', 16)
31
>>> int('1f', 16)
31
Nếu bạn không biết trước cơ sở, nhưng bạn biết họ sẽ có tiền tố chính xác, Python có thể suy ra điều này cho bạn nếu bạn vượt qua 0
làm cơ sở:
>>> int("0b11111", 0)
31
>>> int('0o37', 0)
31
>>> int('0x1f', 0)
31
Văn học không thập phân (tức là số nguyên) từ các cơ sở khác
Tuy nhiên, nếu động lực của bạn là có mã riêng đại diện rõ ràng cho các giá trị cụ thể được mã hóa cứng, bạn có thể không cần phải chuyển đổi từ các cơ sở - bạn có thể để Python tự động làm điều đó cho bạn với cú pháp chính xác.
Bạn có thể sử dụng tiền tố apropos để nhận chuyển đổi tự động sang số nguyên với các chữ sau . Đây là hợp lệ cho Python 2 và 3:
Nhị phân, tiền tố 0b
>>> 0b11111
31
Tiền tố, tiền tố 0o
>>> 0o37
31
Hệ thập lục phân, tiền tố 0x
>>> 0x1f
31
Điều này có thể hữu ích khi mô tả cờ nhị phân, quyền tệp trong mã hoặc giá trị hex cho màu sắc - ví dụ: lưu ý không có dấu ngoặc kép:
>>> 0b10101 # binary flags
21
>>> 0o755 # read, write, execute perms for owner, read & ex for group & others
493
>>> 0xffffff # the color, white, max values for red, green, and blue
16777215
Làm cho Python 2 octals mơ hồ tương thích với Python 3
Nếu bạn thấy một số nguyên bắt đầu bằng 0, trong Python 2, đây là cú pháp bát phân (không dùng nữa).
>>> 037
31
Đó là xấu vì có vẻ như giá trị nên được 37
. Vì vậy, trong Python 3, nó hiện ra một SyntaxError
:
>>> 037
File "<stdin>", line 1
037
^
SyntaxError: invalid token
Chuyển đổi octals Python 2 của bạn thành octals hoạt động ở cả 2 và 3 với 0o
tiền tố:
>>> 0o37
31
type(my_object)
nó. Kết quả thường có thể được gọi là một hàm để thực hiện chuyển đổi. Ví dụ,type(100)
kết quả làint
, vì vậy bạn có thể gọiint(my_object)
để thử chuyển đổimy_object
thành một số nguyên. Điều này không phải lúc nào cũng hoạt động, nhưng là một "dự đoán đầu tiên" tốt khi mã hóa.