Prevod číselného reťazca str na číslo int, float v jazyku Python

obchodné

Ak chcete v jazyku Python previesť reťazec čísel na číselné hodnoty, použite funkciu int() na prevod na celé čísla a funkciu float() na prevod na čísla s pohyblivou rádovou čiarkou.

Nasledujúci postup je vysvetlený spolu so vzorovým kódom.

  • Základné použitie
    • Prevod číselných reťazcov na celé čísla:int()
    • Prevod reťazca čísel na čísla s pohyblivou rádovou čiarkou:float()
  • Špeciálne použitie
    • Prevádza reťazce v binárnom, oktálnom a hexadecimálnom zápise na čísla
    • Prevádza reťazce v exponenciálnom zápise na číselné hodnoty
    • Konverzia reťazcov arabských číslic na celú šírku na čísla
    • Previesť reťazec čínskych znakov na čísla

Ak chcete previesť číselnú hodnotu na reťazec, použite funkciu str().

Ak chcete previesť čísla alebo reťazce do rôznych formátov, použite funkciu format() alebo reťazcovú metódu str.format(). Potom môžete konvertovať na 0-výplňový, binárny, oktálový, hexadecimálny, exponenciálny zápis atď. Podrobnosti nájdete v nasledujúcom článku.

Môže tiež konvertovať zoznam reťazcov na zoznam čísel. Podrobnosti nájdete v nasledujúcom článku.

Prevod číselných reťazcov na celé čísla: int()

Na prevod reťazca čísel na celé čísla môžete použiť funkciu int().

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Desatinné čísla vrátane desatinných miest a reťazce oddelené čiarkami budú mať za následok chybu 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'

Reťazce oddelené čiarkou možno previesť odstránením čiarky (nahradením prázdnym reťazcom) pomocou metódy replace().

print(int('10,000'.replace(',', '')))
# 10000

Prevod reťazca čísel na čísla s pohyblivou rádovou čiarkou: float()

Na prevod reťazca čísel na typ čísla s pohyblivou desatinnou čiarkou možno použiť funkciu float().

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Reťazce s vynechanou celočíselnou časťou sa konvertujú doplnením celočíselnej časti číslom 0.

print(float('.23'))
# 0.23

Celočíselné reťazce sa tiež konvertujú na čísla s pohyblivou rádovou čiarkou.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Prevádza reťazce v binárnom, oktálnom a hexadecimálnom zápise na čísla

Ak je ako druhý argument funkcie int() zadaný radix, reťazec možno previesť na celé číslo int tak, že sa považuje za binárny, oktálový, hexadecimálny atď.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

Rovnako ako v predchádzajúcich príkladoch, ak sa číslo vynechá, považuje sa za desatinné číslo.

print(int('100', 10))
print(int('100'))
# 100
# 100

Ak je radix nastavený na 0, konverzia sa uskutoční na základe prefixu reťazca. Prefixy reťazcov nájdete nižšie.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

Predpony a šestnástkové abecedy môžu byť písané veľkými alebo malými písmenami.

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

Informácie o konverzii binárnych, oktálových a hexadecimálnych čísel a reťazcov nájdete v nasledujúcom článku.

Prevádza reťazce v exponenciálnom zápise na číselné hodnoty

Reťazce v exponenciálnom zápise možno previesť priamo na typ float pomocou funkcie 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'>

Malé e sa môže písať aj s veľkým písmenom E.

print(float('1.23E-4'))
# 0.000123

Konverzia reťazcov arabských číslic na celú šírku na čísla

Arabské číslice s plnou šírkou možno konvertovať priamo na čísla pomocou funkcie int() alebo float().

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Ak sú však symboly, ako napríklad mínus a desatinné bodky, znakmi celej šírky, vygeneruje sa chyba ValueError.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

Čísla sa dajú konvertovať bez problémov, ak sú to znaky s plnou šírkou, ale mínusky a desatinné čiarky sú znaky s polovičnou šírkou. konverzia je možná nahradením symbolov s plnou šírkou symbolmi s polovičnou šírkou pomocou metódy replace().

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

Previesť reťazec čínskych znakov na čísla

Funkciu unicodedata.numeric() v module unicodedata možno použiť na prevod jedného čínskeho znaku Unicode na číslo s pohyblivou desatinnou čiarkou.

Ak nejde o jedno písmeno, vyskytne sa chyba. Chybu spôsobia aj nečíselné znaky.

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