Dacă doriți să convertiți un șir de numere în valori numerice în Python, utilizați int() pentru a converti în numere întregi și float() pentru a converti în numere cu virgulă mobilă.
Următoarele aspecte sunt explicate aici, împreună cu un exemplu de cod.
- Utilizare de bază
- Conversia șirurilor numerice în numere întregi:
int()
- Conversia unui șir de numere în numere cu virgulă mobilă:
float()
- Conversia șirurilor numerice în numere întregi:
- Utilizare specială
- Convertește șirurile de caractere în notație binară, octală și hexazecimală în numere
- Convertește șirurile de caractere în notație exponențială în valori numerice
- Conversia șirurilor de cifre arabe pe toată lățimea în numere
- Conversia unui șir de caractere chinezești în numere
Pentru a converti o valoare numerică într-un șir de caractere, utilizați str().
Dacă doriți să convertiți numere sau șiruri de caractere în diferite formate, utilizați funcția format() sau metoda string str.format(). Apoi, puteți converti în notație 0, binară, octală, hexazecimală, exponențială etc. Pentru detalii, consultați următorul articol.
- RELAȚIE:Conversia formatului în Python, format (umplere cu 0, notație exponențială, hexazecimal, etc.)
De asemenea, poate converti o listă de șiruri de caractere într-o listă de numere. Pentru detalii, consultați următorul articol.
- RELAȚIE:Conversia reciprocă a listelor de șiruri de caractere (array) și a listelor de numere în Python
- Conversia șirurilor numerice în numere întregi: int()
- Conversia unui șir de numere în numere cu virgulă mobilă: float()
- Convertește șirurile de caractere în notație binară, octală și hexazecimală în numere
- Convertește șirurile de caractere în notație exponențială în valori numerice
- Conversia șirurilor de cifre arabe pe toată lățimea în numere
- Conversia unui șir de caractere chinezești în numere
Conversia șirurilor numerice în numere întregi: int()
Puteți utiliza int() pentru a converti un șir de numere în numere de tip întreg.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Decimalele, inclusiv punctele zecimale, și șirurile de caractere separate prin virgulă vor avea ca rezultat o eroare 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'
Șirurile delimitate prin virgulă pot fi convertite prin eliminarea virgulei (înlocuind-o cu un șir gol) cu ajutorul metodei replace().
print(int('10,000'.replace(',', '')))
# 10000
Conversia unui șir de numere în numere cu virgulă mobilă: float()
Un float() poate fi utilizat pentru a converti un șir de numere într-un tip de număr în virgulă mobilă.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Șirurile cu partea întreagă omisă sunt convertite prin completarea părții întregi cu 0.
print(float('.23'))
# 0.23
Șirurile de numere întregi sunt, de asemenea, convertite în numere în virgulă mobilă.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Convertește șirurile de caractere în notație binară, octală și hexazecimală în numere
În cazul în care se specifică un radix ca al doilea argument pentru int(), șirul de caractere poate fi convertit într-un int întreg considerându-l ca fiind binar, octal, hexazecimal etc.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Ca și în exemplele anterioare, dacă este omis, numărul este considerat a fi un număr zecimal.
print(int('100', 10))
print(int('100'))
# 100
# 100
Dacă radixul este setat la 0, conversia se bazează pe prefixul șirului. A se vedea mai jos pentru prefixe de șiruri de caractere.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Prefixele și alfabetul hexagonal pot fi scrise cu majuscule sau minuscule.
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
Consultați următorul articol pentru informații privind interconversia numerelor și șirurilor de caractere binare, octale și hexazecimale.
- RELAȚIE:Conversia numerelor și șirurilor de caractere binare, octale și hexazecimale între ele în Python
Convertește șirurile de caractere în notație exponențială în valori numerice
Șirurile de caractere în notație exponențială pot fi convertite direct în tipul float cu 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'>
E minuscul poate fi scris și cu majusculă E.
print(float('1.23E-4'))
# 0.000123
Conversia șirurilor de cifre arabe pe toată lățimea în numere
Cifrele arabe de lățime întreagă pot fi convertite direct în numere prin int() sau float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Cu toate acestea, în cazul în care simbolurile, cum ar fi minus și punctele zecimale, sunt caractere de lățime completă, va fi generată o eroare ValueError.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Numerele pot fi convertite fără probleme dacă sunt caractere de lățime completă, dar minusurile și punctele zecimale sunt caractere de jumătate de lățime. conversia este posibilă prin înlocuirea simbolurilor de lățime completă cu simboluri de jumătate de lățime cu ajutorul metodei replace().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Conversia unui șir de caractere chinezești în numere
Funcția unicodedata.numeric() din modulul unicodedata poate fi utilizată pentru a converti un singur caracter chinezesc Unicode într-un număr de tip număr în virgulă mobilă.
Dacă nu este o singură literă, se va produce o eroare. De asemenea, caracterele nenumerice vor cauza o eroare.
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