В 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