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()
- Prevod číselných reťazcov na celé čísla:
- Š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()
- Prevod reťazca čísel na čísla s pohyblivou rádovou čiarkou: float()
- 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
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