Форматировать зарплату: отделить пробелом тысячи

есть список зарплат, нужно для удобства отформатировать число- отделить тысячи пробелом. есть код:

salary = '30000'
salary2 = salary.replace('0000', '0 000')
print(salary2)

получается то что надо: 30 000 , но проблема в том, что если будет зарплата например 300000, то на выходе я получу 30 0000 как решить проблему форматирования зарплат для всех уровней, и с 3мя нолями вроде 9000 и с 5ю нолями вроде 300000?


Ответы (1 шт):

Автор решения: Павел

Если всегда нужно именно количество тысяч, то можно так:

def get_formated_salary(salary):
    return f'{salary[:-3]} {salary[-3:]}'

print(get_formated_salary('30000'))
print(get_formated_salary('300000'))
print(get_formated_salary('3000000'))

Вывод:

30 000 
300 000 
3000 000

Для общего случая, можно просто последовательно разбивать строку с зарплатой на блоки по 3:

def get_formated_salary(salary):
    salary_blocks = []
    while len(salary) > 3:
        salary_blocks.append(salary[-3:])
        salary = salary[:-3]
    salary_blocks = ' '.join(salary_blocks[::-1])
    return f'{salary} {salary_blocks}'

print(get_formated_salary('30000'))
print(get_formated_salary('300000'))
print(get_formated_salary('3000000'))

Вывод:

30 000 
300 000 
3 000 000
→ Ссылка