Как поменять местами 0 и 1 в строке

Решил написать свою функцию для перевода числа из десятичной системы счисления в двоичную. На положительных числах все норм, но чтобы разобраться с отрицательными нужно после деления поменять местами нули и единицы в полученной строке, но я не знаю как (пробовал метод replace, но он заменяет только что то одно, то есть либо нули на единицы либо наоборот)

Вот код:

def decimal_to_binary(number):
    final = ''
    number_positive = abs(number)
    while number_positive not in (0, -1):
        final += str(number_positive % 2)
        number_positive //= 2
    return (final.replace('0', '1'))[::-1] + '1' if number < 0 else final[::-1]

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

Автор решения: dIm0n

Можно проще сделать:

print(bin(42))

Своя функция:

def decimal_to_binary(number):
    return bin(number)

print(decimal_to_binary(42))
→ Ссылка
Автор решения: MarianD
final.translate({ord("0"): "1", 
                 ord("1"): "0"})

or

final.translate(str.maketrans("01", "10"))

Объяснение:

В первом случае мы прямо задаваем переводную таблицу-словарь, ключами которого должны быть порядковые номера символов (в системе Юникод), которые мы хотим заменить.

Во втором случае мы переводную таблицу создаем методом .maketrans() с двумя параметрами-строками одинаковой длины, что значит графически вот что:

"01" 
 ↓↓
"10"

т.е. все нули заменить на единицы и все единицы заменить на нули.

→ Ссылка