Jika anda ingin menukar rentetan nombor kepada nilai berangka dalam Python, gunakan int() untuk menukar kepada integer dan float() untuk menukar kepada nombor titik terapung.
Perkara berikut diterangkan di sini, bersama dengan kod sampel.
- Penggunaan asas
- Tukar rentetan berangka kepada integer:
int()
- Tukar rentetan nombor kepada nombor titik terapung:
float()
- Tukar rentetan berangka kepada integer:
- Penggunaan Khas
- Menukar rentetan dalam tatatanda perduaan, perlapanan dan heksadesimal kepada nombor
- Menukar rentetan dalam tatatanda eksponen kepada nilai berangka
- Tukar rentetan angka Arab lebar penuh kepada nombor
- Tukar rentetan aksara Cina kepada nombor
Untuk menukar nilai berangka kepada rentetan, gunakan str().
Jika anda ingin menukar nombor atau rentetan kepada pelbagai format, gunakan fungsi format() atau kaedah rentetan str.format(). Kemudian anda boleh menukar kepada 0-isi, binari, perlapanan, perenambelasan, tatatanda eksponen, dsb. Lihat artikel berikut untuk mendapatkan butiran.
- BERKAITAN:Format penukaran dalam Python, format (0-pengisian, notasi eksponen, perenambelasan, dll.)
Ia juga boleh menukar senarai rentetan kepada senarai nombor. Lihat artikel berikut untuk butirannya.
- BERKAITAN:Menukar senarai rentetan (tatasusunan) dan senarai nombor antara satu sama lain dalam Python
- Tukar rentetan berangka kepada integer:int()
- Tukar rentetan nombor kepada nombor titik terapung:float()
- Menukar rentetan dalam tatatanda perduaan, perlapanan dan heksadesimal kepada nombor
- Menukar rentetan dalam tatatanda eksponen kepada nilai berangka
- Tukar rentetan angka Arab lebar penuh kepada nombor
- Tukar rentetan aksara Cina kepada nombor
Tukar rentetan berangka kepada integer:int()
Anda boleh menggunakan int() untuk menukar rentetan nombor kepada nombor jenis integer.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Perpuluhan, termasuk titik perpuluhan dan rentetan yang dipisahkan dengan koma akan mengakibatkan ValueError.
# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'
# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'
Rentetan yang dibatasi koma boleh ditukar dengan mengalih keluar koma (menggantikannya dengan rentetan kosong) menggunakan kaedah replace().
print(int('10,000'.replace(',', '')))
# 10000
Tukar rentetan nombor kepada nombor titik terapung:float()
float() boleh digunakan untuk menukar rentetan nombor kepada jenis nombor titik terapung.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Rentetan dengan bahagian integer yang ditinggalkan ditukar dengan melengkapkan bahagian integer dengan 0.
print(float('.23'))
# 0.23
Rentetan integer juga ditukar kepada nombor titik terapung.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Menukar rentetan dalam tatatanda perduaan, perlapanan dan heksadesimal kepada nombor
Jika radix ditentukan sebagai argumen kedua kepada int(), rentetan boleh ditukar kepada integer int dengan menganggapnya sebagai perduaan, perlapanan, perenambelasan, dsb.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Seperti dalam contoh sebelumnya, jika ditinggalkan, nombor itu dianggap sebagai nombor perpuluhan.
print(int('100', 10))
print(int('100'))
# 100
# 100
Jika radix ditetapkan kepada 0, penukaran adalah berdasarkan awalan rentetan. Lihat di bawah untuk awalan rentetan.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Awalan dan abjad heks mungkin sama ada huruf besar atau huruf kecil.
print(int('FF', 16))
print(int('ff', 16))
# 255
# 255
print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255
Lihat artikel berikut untuk mendapatkan maklumat tentang pertukaran antara nombor dan rentetan perduaan, perlapanan dan perenambelasan.
- BERKAITAN:Tukar nombor dan rentetan perduaan, perlapanan dan perenambelasan antara satu sama lain dalam Python
Menukar rentetan dalam tatatanda eksponen kepada nilai berangka
Rentetan dalam tatatanda eksponen boleh ditukar terus kepada jenis terapung dengan float().
print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>
print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>
Huruf kecil e juga boleh menggunakan huruf besar E.
print(float('1.23E-4'))
# 0.000123
Tukar rentetan angka Arab lebar penuh kepada nombor
Angka Arab lebar penuh boleh ditukar terus kepada nombor dengan int() atau float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Walau bagaimanapun, jika simbol seperti titik tolak dan perpuluhan ialah aksara lebar penuh, ValueError akan dijana.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Nombor boleh ditukar tanpa masalah jika ia adalah aksara lebar penuh, tetapi titik tolak dan perpuluhan ialah aksara separuh lebar. penukaran boleh dilakukan dengan menggantikan simbol lebar penuh dengan simbol separuh lebar menggunakan kaedah replace().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Tukar rentetan aksara Cina kepada nombor
Fungsi unicodedata.numeric() dalam modul unicodedata boleh digunakan untuk menukar satu aksara Cina Unikod kepada nombor jenis nombor titik terapung.
Jika ia bukan satu huruf, ralat akan berlaku. Selain itu, aksara bukan angka akan menyebabkan ralat.
import unicodedata
print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>
print(unicodedata.numeric('十'))
# 10.0
print(unicodedata.numeric('参'))
# 3.0
print(unicodedata.numeric('億'))
# 100000000.0
# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str
# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character