В Python, как я могу разобрать числовую строку, такую как "545.2222", в соответствующее значение с плавающей точкой, 542.2222? Или разобрать строку «31» в целое число 31?
Я просто хочу знать, как разобрать строку с плавающей точкой в число с плавающей точкой, и (отдельно) строку int для int.
Хорошо, что вы просите сделать это отдельно. Если вы смешиваете их, возможно, вы позже настроитесь на проблемы. Простой ответ:
"545.2222"
держаться на плаву:
>>> float("545.2222")
545.2222
"31"
в целое число:
>>> int("31")
31
Другие преобразования, целые числа в и из строк и литералов:
Конверсии из разных баз, и вы должны знать базу заранее (по умолчанию 10). Обратите внимание, что вы можете добавить к ним префикс того, что Python ожидает от своих литералов (см. Ниже), или удалить префикс:
>>> int("0b11111", 2)
31
>>> int("11111", 2)
31
>>> int('0o37', 8)
31
>>> int('37', 8)
31
>>> int('0x1f', 16)
31
>>> int('1f', 16)
31
Если вы не знаете базу заранее, но знаете, что у них будет правильный префикс, Python может сделать для вас вывод, если вы передадите 0
в качестве базы:
>>> int("0b11111", 0)
31
>>> int('0o37', 0)
31
>>> int('0x1f', 0)
31
Недесятичные (то есть целочисленные) литералы из других базисов
Если ваша мотивация состоит в том, чтобы ваш собственный код четко представлял жестко запрограммированные конкретные значения, вам, возможно, не потребуется конвертировать из баз - вы можете позволить Python сделать это для вас автоматически с правильным синтаксисом.
Вы можете использовать префиксы apropos для автоматического преобразования в целые числа со следующими литералами . Они действительны для Python 2 и 3:
Двоичный, префикс 0b
>>> 0b11111
31
Октал, префикс 0o
>>> 0o37
31
Шестнадцатеричный, префикс 0x
>>> 0x1f
31
Это может быть полезно при описании двоичных флагов, прав доступа к файлам в коде или шестнадцатеричных значений для цветов - например, не заключайте в кавычки:
>>> 0b10101 # binary flags
21
>>> 0o755 # read, write, execute perms for owner, read & ex for group & others
493
>>> 0xffffff # the color, white, max values for red, green, and blue
16777215
Делаем неоднозначные восьмеричные Python 2 совместимыми с Python 3
Если вы видите целое число, которое начинается с 0, в Python 2 это (не рекомендуется) восьмеричный синтаксис.
>>> 037
31
Это плохо, потому что похоже, что значение должно быть 37
. Таким образом, в Python 3 теперь возникает SyntaxError
:
>>> 037
File "<stdin>", line 1
037
^
SyntaxError: invalid token
Преобразуйте восьмеричные числа Python 2 в восьмеричные, которые работают в 2 и 3 с 0o
префиксом:
>>> 0o37
31
type(my_object)
его. Результат обычно может быть вызван как функция для преобразования. Например,type(100)
результатint
, так что вы можете позвонить,int(my_object)
чтобы попытаться преобразоватьmy_object
в целое число. Это не всегда работает, но это хорошая «первая догадка» при кодировании.