Jeśli chcesz przekonwertować ciąg liczb na wartości liczbowe w Pythonie, użyj int() do konwersji na liczby całkowite i float() do konwersji na liczby zmiennoprzecinkowe.
Objaśniono tu następujące zagadnienia wraz z przykładowym kodem.
- Użycie podstawowe
- Konwertuj ciągi liczbowe na liczby całkowite:
int()
- Konwertuj ciąg liczb na liczby zmiennoprzecinkowe:
float()
- Konwertuj ciągi liczbowe na liczby całkowite:
- Zastosowanie specjalne
- Konwertuje ciągi znaków w notacji binarnej, ósemkowej i szesnastkowej na liczby
- Konwertuje ciągi znaków w notacji wykładniczej na wartości liczbowe
- Konwertuj ciągi cyfr arabskich o pełnej szerokości na liczby
- Konwertuj ciąg znaków chińskich na liczby
Aby przekonwertować wartość liczbową na ciąg znaków, użyj funkcji str().
Jeśli chcesz przekonwertować liczby lub ciągi znaków na różne formaty, użyj funkcji format() lub metody łańcuchowej str.format(). W ten sposób można konwertować na notację zerojedynkową, binarną, ósemkową, szesnastkową, wykładniczą itd. Szczegółowe informacje na ten temat można znaleźć w poniższym artykule.
- RELATED:Konwersja formatu w Pythonie, format (wypełnianie 0, notacja wykładnicza, szesnastkowa itd.)
Może także konwertować listę łańcuchów na listę liczb. Szczegółowe informacje na ten temat można znaleźć w poniższym artykule.
- Konwertuj ciągi liczbowe na liczby całkowite: int()
- Konwertuj ciąg liczb na liczby zmiennoprzecinkowe: float()
- Konwertuje ciągi znaków w notacji binarnej, ósemkowej i szesnastkowej na liczby
- Konwertuje ciągi znaków w notacji wykładniczej na wartości liczbowe
- Konwertuj ciągi cyfr arabskich o pełnej szerokości na liczby
- Konwertuj ciąg znaków chińskich na liczby
Konwertuj ciągi liczbowe na liczby całkowite: int()
Funkcji int() można użyć do konwersji ciągu liczb na liczby typu całkowitego.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Wartości dziesiętne, w tym przecinki, oraz ciągi znaków oddzielone przecinkami spowodują wystąpienie błędu 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'
Łańcuchy ograniczone przecinkami można przekonwertować, usuwając przecinek (zastępując go pustym łańcuchem) za pomocą metody replace().
print(int('10,000'.replace(',', '')))
# 10000
Konwertuj ciąg liczb na liczby zmiennoprzecinkowe: float()
Funkcja float() może być użyta do konwersji ciągu liczb na typ liczby zmiennoprzecinkowej.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Łańcuchy z pominiętą częścią całkowitą są konwertowane przez uzupełnienie części całkowitej liczbą 0.
print(float('.23'))
# 0.23
Ciągi liczb całkowitych są również konwertowane na liczby zmiennoprzecinkowe.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Konwertuje ciągi znaków w notacji binarnej, ósemkowej i szesnastkowej na liczby
Jeśli jako drugi argument funkcji int() zostanie podany radix, to łańcuch może zostać przekonwertowany na liczbę całkowitą int przez potraktowanie go jako liczby binarnej, ósemkowej, szesnastkowej itd.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Podobnie jak w poprzednich przykładach, jeśli liczba zostanie pominięta, będzie traktowana jako liczba dziesiętna.
print(int('100', 10))
print(int('100'))
# 100
# 100
Jeśli radix jest ustawiony na 0, konwersja jest dokonywana na podstawie prefiksu łańcucha. Informacje o prefiksach łańcuchów znajdują się poniżej.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Przedrostki i alfabety heksadecymalne mogą być pisane wielkimi lub małymi literami.
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
Informacje na temat konwersji liczb i ciągów binarnych, ósemkowych i szesnastkowych można znaleźć w poniższym artykule.
Konwertuje ciągi znaków w notacji wykładniczej na wartości liczbowe
Ciągi w notacji wykładniczej można bezpośrednio przekonwertować na typ float za pomocą funkcji 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'>
Małe e może być również pisane wielką literą E.
print(float('1.23E-4'))
# 0.000123
Konwertuj ciągi cyfr arabskich o pełnej szerokości na liczby
Cyfry arabskie o pełnej szerokości mogą być przekształcane bezpośrednio na liczby za pomocą funkcji int() lub float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Jeśli jednak symbole, takie jak minus i kropki dziesiętne, są znakami o pełnej szerokości, zostanie wygenerowany błąd ValueError.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Liczby mogą być konwertowane bez problemów, jeśli są znakami o pełnej szerokości, ale minus i przecinek dziesiętny są znakami o połowie szerokości. konwersja jest możliwa dzięki zastąpieniu symboli o pełnej szerokości symbolami o połowie szerokości za pomocą metody replace().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Konwertuj ciąg znaków chińskich na liczby
Funkcja unicodedata.numeric() w module unicodedata może być użyta do konwersji pojedynczego chińskiego znaku Unicode na liczbę typu zmiennoprzecinkowego.
Jeśli nie jest to pojedyncza litera, wystąpi błąd. Błąd spowodują również znaki nienumeryczne.
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