Converteer getal string str naar getal int, float in Python

Bedrijf

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()
  • 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.

Het kan ook een lijst van tekenreeksen omzetten in een lijst van getallen. Zie het volgende artikel voor details.

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.

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
Copied title and URL