Dalam Python, bagaimana saya bisa mengurai string numerik seperti "545.2222" ke nilai float yang sesuai, 542.2222? Atau parsing string "31" ke integer, 31?
Saya hanya ingin tahu bagaimana mengurai string float ke float, dan (secara terpisah) string int ke int.
Ada baiknya Anda meminta untuk melakukan ini secara terpisah. Jika Anda mencampurnya, Anda mungkin menyiapkan diri untuk masalah nanti. Jawaban sederhananya adalah:
"545.2222"
untuk mengapung:
>>> float("545.2222")
545.2222
"31"
ke integer:
>>> int("31")
31
Konversi lain, int ke dan dari string dan literal:
Konversi dari berbagai pangkalan, dan Anda harus tahu pangkalan di muka (10 adalah default). Catatan Anda bisa mengawali mereka dengan apa yang Python harapkan untuk literalnya (lihat di bawah) atau menghapus awalan:
>>> int("0b11111", 2)
31
>>> int("11111", 2)
31
>>> int('0o37', 8)
31
>>> int('37', 8)
31
>>> int('0x1f', 16)
31
>>> int('1f', 16)
31
Jika Anda tidak tahu basis sebelumnya, tetapi Anda tahu mereka akan memiliki awalan yang benar, Python dapat menyimpulkan ini untuk Anda jika Anda lulus 0
sebagai basis:
>>> int("0b11111", 0)
31
>>> int('0o37', 0)
31
>>> int('0x1f', 0)
31
Literal Non-Desimal (yaitu Integer) dari Basa lain
Namun, jika motivasi Anda adalah untuk memiliki kode sendiri dengan jelas mewakili nilai spesifik yang dikodekan secara keras, Anda mungkin tidak perlu mengonversi dari basis - Anda dapat membiarkan Python melakukannya untuk Anda secara otomatis dengan sintaks yang benar.
Anda dapat menggunakan awalan apropos untuk mendapatkan konversi otomatis ke bilangan bulat dengan literal berikut . Ini berlaku untuk Python 2 dan 3:
Biner, awalan 0b
>>> 0b11111
31
Oktal, awalan 0o
>>> 0o37
31
Heksadesimal, awalan 0x
>>> 0x1f
31
Ini dapat berguna saat menggambarkan flag biner, izin file dalam kode, atau nilai hex untuk warna - misalnya, perhatikan tanpa tanda kutip:
>>> 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
Membuat ambigual Python 2 oktal kompatibel dengan Python 3
Jika Anda melihat bilangan bulat yang dimulai dengan 0, dalam Python 2, ini adalah sintaks oktal (tidak digunakan).
>>> 037
31
Itu buruk karena sepertinya nilainya seharusnya 37
. Jadi dalam Python 3, sekarang memunculkan SyntaxError
:
>>> 037
File "<stdin>", line 1
037
^
SyntaxError: invalid token
Ubah Python 2 oktal Anda menjadi oktal yang berfungsi di 2 dan 3 dengan 0o
awalan:
>>> 0o37
31
type(my_object)
saja. Hasilnya biasanya dapat disebut sebagai fungsi untuk melakukan konversi. Misalnyatype(100)
hasil dalamint
, jadi Anda dapat meneleponint(my_object)
untuk mencoba mengonversimy_object
ke bilangan bulat. Ini tidak selalu berhasil, tetapi merupakan "tebakan pertama" yang bagus saat coding.