Как преобразовать число в строку в Python: примеры и объяснения
Преобразование чисел в строки в Python: методы и примеры
Самый эффективный и современный способ преобразовать число в строку - использование f-строк (f-strings), появившихся в Python 3.6. Этот метод обеспечивает высокую читаемость и производительность. Для базового преобразования достаточно поместить число в фигурные скобки внутри строки с префиксом f.
number = 1234
result = f'{number}'
print(result) # 1234
print(type(result)) # <class 'str'>атрибуты класса python (атрибуты классов и объектов в python)
1234 <class 'str'>
библиотека классов python (библиотека классов в python)
Преимущества: лаконичность, возможность сразу задать формат (например, количество знаков после запятой).
Как перевести число в строку без дополнительного форматирования?
Функция str() - самый очевидный способ. Она принимает любой объект и возвращает его строковое представление.
value = 42
text = str(value)
print(text, type(text)) # 42 <class 'str'>метод объекта python (методы объектов в python)
42 <class 'str'>
Python структура объекта (структура объекта в python)
Типичная ошибка: попытка применить str() к числам, уже записанным как строки. Функция просто вернёт ту же строку, что может привести к путанице. Всегда проверяйте тип исходных данных.
text_number = '123'
print(str(text_number)) # '123' - не число, а строкаPython создание объектов (создание объектов в python)
Как задать точность вывода при преобразовании чисел с плавающей точкой?
Метод format() позволяет управлять форматированием с помощью спецификаций. Например, {:.2f} оставляет два знака после запятой.
pi = 3.1415926535
formatted = '{:.2f}'.format(pi)
print(formatted) # 3.14Self object python (объект self в python)
3.14
Object attribute python (атрибуты объекта в python)
Проблема: если указать неверный спецификатор (например, d для дробного числа), возникнет ValueError. Убедитесь, что спецификатор соответствует типу числа.
# '{:d}'.format(3.14) # ValueError: Unknown format code 'd' for object of type 'float'Python call method (вызов метода в python)
Как использовать старый стиль форматирования чисел?
Оператор % (процент) - наследие C-стиля. Применяется, когда нужна обратная совместимость или в коде, написанном до версии 3.0.
count = 5
message = '%d яблок' % count
print(message) # 5 яблокPython класс данных (класс данных в python)
5 яблок
Class method python (методы классов в python)
Распространённая ошибка: несоответствие количества аргументов числу спецификаторов. Приводит к TypeError: not enough arguments for format string. Используйте кортеж для нескольких значений.
# '%d и %d' % (1, 2, 3) # TypeErrorPython object methods (методы объектов в python)
Как вывести число с разделителями разрядов (пробелами или запятыми)?
В Python 3.6+ можно использовать встроенную возможность форматирования с символом _ или , в качестве разделителя. Для чисел с плавающей точкой разделитель ставится между целой и дробной частью.
large = 1234567890
print(f'{large:_}') # 1_234_567_890
print(f'{large:,}') # 1,234,567,890класс python определение (определение классов в python)
1_234_567_890 1,234,567,890
Self method python (параметр self в методах python)
Проблема: на разных локалях разделитель может отличаться. Для автоматической локализации используйте модуль locale.
import locale
locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8')
print(locale.format_string('%d', large, grouping=True)) # 1 234 567 890приватные атрибуты python (приватные атрибуты в python)
Как получить прописное представление числа на русском (сто двадцать три)?
Стандартная библиотека Python не содержит функций для преобразования числа в текст прописью. Для этого используется сторонний пакет num2words.
from num2words import num2words
text = num2words(123, lang='ru')
print(text) # сто двадцать трисоздание типов python (создание пользовательских типов данных в python)
сто двадцать три
Возможные сложности: пакет необходимо установить (pip install num2words). Для русского языка требуется поддержка lang='ru'. Не все версии пакета корректно обрабатывают крупные числа (миллионы, миллиарды). Проверяйте актуальность.
Расширенные примеры преобразования чисел в строки
Использование спецификаторов формата для разных числовых типов
Python поддерживает множество спецификаторов: d (целое), f (фиксированная точка), e (экспоненциальная форма), g (общий), x (шестнадцатеричное), o (восьмеричное), b (двоичное).
n = 255
print(f'{n:d}') # 255
print(f'{n:x}') # ff
print(f'{n:#x}') # 0xff
print(f'{n:o}') # 377
print(f'{n:b}') # 11111111
print(f'{n:#b}') # 0b11111111
255 ff 0xff 377 11111111 0b11111111
Преобразование комплексных чисел
Комплексные числа преобразуются в строку с помощью str() или f-строк. Можно управлять форматированием действительной и мнимой частей.
z = 3 + 4j
print(str(z)) # (3+4j)
print(f'{z.real:.1f} + {z.imag:.1f}j') # 3.0 + 4.0j
(3+4j) 3.0 + 4.0j
Форматирование с выравниванием и заполнением
Можно задать ширину поля, выравнивание (левое, правое, по центру) и символ заполнения.
value = 42
print(f'{value:>10}') # ' 42'
print(f'{value:<10}') # '42 '
print(f'{value:^10}') # ' 42 '
print(f'{value:0=10}') # '0000000042'
42
42
42
0000000042
Использование метода format() с именованными аргументами
Позволяет повторно использовать одно и то же число в разных форматах в одной строке.
temp = 36.6
msg = 'Температура: {temp:.1f}°C или {temp:.2f}°C'.format(temp=temp)
print(msg) # Температура: 36.6°C или 36.60°C
Температура: 36.6°C или 36.60°C
Преобразование Decimal и Fraction в строку
Типы из модулей decimal и fractions также преобразуются стандартными методами.
from decimal import Decimal
from fractions import Fraction
d = Decimal('3.14159')
f = Fraction(22, 7)
print(str(d)) # 3.14159
print(str(f)) # 22/7
# Форматирование с точностью
print(f'{d:.2f}') # 3.14
print(f'{float(f):.4f}') # 3.1429
3.14159 22/7 3.14 3.1429
Применение repr() для чисел с плавающей точкой
repr() возвращает такое строковое представление, которое при передаче в eval() восстановит исходное число (с точностью).
import math
print(repr(math.pi)) # '3.141592653589793'
print(str(math.pi)) # '3.141592653589793' (в большинстве версий одинаково)
3.141592653589793 3.141592653589793
Однако для некоторых чисел разница может быть заметна:
a = 0.1
print(repr(a)) # '0.1'
print(str(a)) # '0.1' - но на самом деле хранится не точно 0.1
Преобразование научной нотации с большими и малыми числами
Для очень больших или малых чисел f-строки по умолчанию используют научный формат.
big = 1e15
small = 5e-10
print(f'{big}') # 1e+15
print(f'{small}') # 5e-10
# Принудительный фиксированный формат
print(f'{big:.0f}') # 1000000000000000
1e+15 5e-10 1000000000000000
Использование Template из модуля string
Шаблонные строки с заменой через $ - альтернативный способ, безопасный для пользовательского ввода.
from string import Template
t = Template('$count предметов на складе')
msg = t.substitute(count=42)
print(msg) # 42 предметов на складе
42 предметов на складе
Преобразование строки обратно в число (дополнительно)
Иногда полезно знать, как проверять корректность преобразования. Используется try/except с int() или float().
def safe_convert(s):
try:
return int(s)
except ValueError:
try:
return float(s)
except ValueError:
return None
print(safe_convert('123')) # 123
print(safe_convert('3.14')) # 3.14
print(safe_convert('abc')) # None