Indien je in Python een getallenreeks wil omzetten naar numerieke waarden, gebruik dan int() om om te zetten naar gehele getallen en float() om om te zetten naar drijvende komma getallen.
Het volgende wordt hier uitgelegd, samen met voorbeeldcode.
- Basisgebruik
- Numerieke tekenreeksen omzetten in gehele getallen:
int()
- Converteer een reeks getallen naar drijvende komma getallen:
float()
- Numerieke tekenreeksen omzetten in gehele getallen:
- Speciaal gebruik
- Converteert tekenreeksen in binaire, octale en hexadecimale notatie naar getallen
- Converteert tekenreeksen in exponentiële notatie naar numerieke waarden
- Arabisch cijferreeksen op volledige breedte omzetten in getallen
- Een reeks Chinese karakters omzetten in getallen
Om een numerieke waarde om te zetten in een string, gebruik je str().
Als je getallen of tekenreeksen wilt omzetten naar verschillende formaten, gebruik dan de format() functie of de string methode str.format(). Dan kun je converteren naar 0-fill, binair, octaal, hexadecimaal, exponentiële notatie, enz. Zie het volgende artikel voor details.
- GERELATEERD:Formaat conversie in Python, formaat (0-vulling, exponentiële notatie, hexadecimaal, etc.)
Het kan ook een lijst van tekenreeksen omzetten in een lijst van getallen. Zie het volgende artikel voor details.
- GERELATEERD:Lijsten van tekenreeksen (arrays) en lijsten van getallen naar elkaar converteren in Python
- Numerieke tekenreeksen omzetten in gehele getallen: int()
- Converteer een reeks getallen naar drijvende komma getallen: float()
- Converteert tekenreeksen in binaire, octale en hexadecimale notatie naar getallen
- Converteert tekenreeksen in exponentiële notatie naar numerieke waarden
- Arabisch cijferreeksen op volledige breedte omzetten in getallen
- Een reeks Chinese karakters omzetten in getallen
Numerieke tekenreeksen omzetten in gehele getallen: int()
Je kunt int() gebruiken om een string van getallen om te zetten naar getallen van het gehele getalstype.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Decimalen, inclusief decimalen, en tekenreeksen gescheiden door komma's zullen resulteren in een 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'
Door komma's gescheiden strings kunnen worden geconverteerd door de komma te verwijderen (vervangen door een lege string) met de methode replace().
print(int('10,000'.replace(',', '')))
# 10000
Converteer een reeks getallen naar drijvende komma getallen: float()
Een float() kan worden gebruikt om een reeks getallen om te zetten naar een drijvend-kommagetal.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Teksten waarvan het gehele getaldeel is weggelaten, worden geconverteerd door het gehele getaldeel aan te vullen met 0.
print(float('.23'))
# 0.23
Ook integer strings worden geconverteerd naar floating-point getallen.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Converteert tekenreeksen in binaire, octale en hexadecimale notatie naar getallen
Als een radix wordt opgegeven als tweede argument voor int(), kan de string worden geconverteerd naar een integer int door deze te beschouwen als binair, octaal, hexadecimaal, enz.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Zoals in de vorige voorbeelden wordt het getal, indien weggelaten, beschouwd als een decimaal getal.
print(int('100', 10))
print(int('100'))
# 100
# 100
Als de radix op 0 is ingesteld, is de conversie gebaseerd op het tekenreeksvoorvoegsel. Zie hieronder voor stringvoorvoegsels.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Voorvoegsels en hexalfabetten kunnen zowel hoofdletters als kleine letters zijn.
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
Zie het volgende artikel voor informatie over de interconversie van binaire, octale en hexadecimale getallen en tekenreeksen.
- GERELATEERD:Converteer binaire, octale en hexadecimale getallen en tekenreeksen naar elkaar in Python
Converteert tekenreeksen in exponentiële notatie naar numerieke waarden
Strings in exponentiële notatie kunnen rechtstreeks geconverteerd worden naar het float type met 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'>
De kleine letter e mag ook de hoofdletter E zijn.
print(float('1.23E-4'))
# 0.000123
Arabisch cijferreeksen op volledige breedte omzetten in getallen
Arabische cijfers over de volledige breedte kunnen rechtstreeks in getallen worden omgezet door int() of float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Als symbolen zoals minnen en decimale punten echter tekens zijn die de hele breedte beslaan, zal een ValueError worden gegenereerd.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Getallen kunnen zonder problemen worden geconverteerd als ze tekens zijn met een volledige breedte, maar minpunten en decimalen zijn tekens met een halve breedte. Conversie is mogelijk door symbolen met een volledige breedte te vervangen door symbolen met een halve breedte met behulp van de methode replace().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Een reeks Chinese karakters omzetten in getallen
De functie unicodedata.numeric() in de module unicodedata kan worden gebruikt om een enkel Unicode Chinees teken om te zetten in een getal van het type floating-point.
Als het niet om één letter gaat, treedt er een fout op. Ook niet-numerieke tekens zullen een fout veroorzaken.
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