Пераўтварыць радок лікаў str ў лік int, float у Python

Бізнэс

Калі вы хочаце пераўтварыць радок лікаў у лікавыя значэнні ў Python, выкарыстоўвайце int() для пераўтварэння ў цэлыя лікі і float() для пераўтварэння ў лікі з плаваючай кропкай.

Тут тлумачыцца наступнае разам з прыкладам кода.

  • Асноўнае выкарыстанне
    • Пераўтварэнне лікавых радкоў у цэлыя:int()
    • Пераўтварыць радок лікаў у лікі з плаваючай кропкай:float()
  • Спецыяльнае выкарыстанне
    • Пераўтварае радкі ў двайковым, васьмярковым і шаснаццатковым абазначэнні ў лікі
    • Пераўтварае радкі ў экспанентным абазначэнні ў лікавыя значэнні
    • Пераўтварэнне радкоў арабскіх лічбаў на поўную шырыню ў лічбы
    • Пераўтварэнне радка кітайскіх іерогліфаў у лічбы

Каб пераўтварыць лікавае значэнне ў радок, выкарыстоўвайце str().

Калі вы хочаце пераўтварыць лікі або радкі ў розныя фарматы, выкарыстоўвайце функцыю format() або метад радка str.format(). Затым вы можаце пераўтварыць у 0-запаўненне, двайковае, васьмярковае, шаснаццатковае, экспанентнае абазначэнне і г.д. Больш падрабязную інфармацыю глядзіце ў наступным артыкуле.

Ён таксама можа пераўтварыць спіс радкоў у спіс лікаў. Больш падрабязную інфармацыю глядзіце ў наступным артыкуле.

Пераўтварэнне лікавых радкоў у цэлыя:int()

Вы можаце выкарыстоўваць int() для пераўтварэння радка лікаў у лічбы цэлага тыпу.

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

Дзесятковыя знакі, у тым ліку дзесятковыя коскі, і радкі, падзеленыя коскамі, прывядуць да памылкі 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'

Радкі, падзеленыя коскамі, можна пераўтварыць, выдаліўшы коску (замяніўшы яе пустым радком) з дапамогай метаду replace().

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

Пераўтварыць радок лікаў у лікі з плаваючай кропкай:float()

Для пераўтварэння радка лікаў у лік з плаваючай кропкай можна выкарыстоўваць float().

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

Радкі з апушчанай цэлай часткай пераўтворацца шляхам дапаўнення цэлай часткі 0.

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

Цэлыя радкі таксама пераўтворацца ў лікі з плаваючай кропкай.

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

Пераўтварае радкі ў двайковым, васьмярковым і шаснаццатковым абазначэнні ў лікі

Калі ў якасці другога аргумента для int() зададзена радыкс, радок можна пераўтварыць у цэлае цэлае, разглядаючы яго як двайковы, васьмярковы, шаснаццатковы і г.д.

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

Як і ў папярэдніх прыкладах, калі ён апушчаны, лік лічыцца дзесятковым лікам.

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

Калі падстаўка ўстаноўлена на 0, пераўтварэнне заснавана на прэфіксе радка. Глядзіце ніжэй прэфіксы радкоў.

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

Прэфіксы і шаснаццатковыя алфавіты могуць быць як вялікімі, так і малымі.

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

Глядзіце наступны артыкул для атрымання інфармацыі аб узаемным пераўтварэнні двайковых, васьмярковых і шаснаццатковых лікаў і радкоў.

Пераўтварае радкі ў экспанентным абазначэнні ў лікавыя значэнні

Радкі ў экспанентным абазначэнні могуць быць пераўтвораны непасрэдна ў тып float з дапамогай 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'>

Малы рэгістр e таксама можа пісаць з вялікай літары.

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

Пераўтварэнне радкоў арабскіх лічбаў на поўную шырыню ў лічбы

Арабскія лічбы на поўную шырыню можна пераўтварыць непасрэдна ў лічбы з дапамогай int() або float().

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

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

Аднак, калі такія сімвалы, як мінус і дзесятковы кропкі, з’яўляюцца сімваламі поўнай шырыні, будзе згенеравана ValueError.

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

Лічбы могуць быць пераўтвораны без праблем, калі яны з’яўляюцца сімваламі поўнай шырыні, але мінус і дзесятковы коскі – гэта сімвалы паловы шырыні. пераўтварэнне магчыма шляхам замены сімвалаў поўнай шырыні сімваламі паловы шырыні з дапамогай метаду replace().

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

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

Пераўтварэнне радка кітайскіх іерогліфаў у лічбы

Функцыя unicodedata.numeric() у модулі unicodedata можа быць выкарыстана для пераўтварэння аднаго кітайскага сімвала Unicode у лік тыпу з плаваючай кропкай.

Калі гэта не адна літара, адбудзецца памылка. Акрамя таго, нелічбавыя сімвалы прывядуць да памылкі.

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