python переносит цифры при записи в файл

в общем на вход подается такая строка 7789004508685868=829 на выходе должна быть такая 7789009392043512=00127229560000000. А получается такая 00000007789000271516306=4912722957

Код:

f=open('cards.txt','r')
fwrite=open('dumps.txt','w')
for line in f:
    if "=" in line:
        card_info=line.split('=')
    elif ":" in line:
        card_info=line.split(':')
    
    if card_info[0][6:8]=='93':
        fwrite.write(card_info[0]+f"=0012722{card_info[1]}0000000")
    else:
        fwrite.write(card_info[0]+f"=4912722{card_info[1]}0000000")

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

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

Дело в том, что в line будет символ перевода строки т.е. \n или \n\r, при итерировании файлового объекта. Можно или удалять справа те символы, или воспользоваться методом readlines

Когда вы разделили line, символ перевода строки попал card_info[1]

Я бы удалял справа символы перевода строки, а при записи в файл добавлял их:

f = open('cards.txt')
fwrite = open('dumps.txt', 'w')
for line in f:
    line = line.rstrip('\r\n')
    if "=" in line:
        card_info = line.split('=')
    elif ":" in line:
        card_info = line.split(':')
    
    if card_info[0][6:8] == '93':
        fwrite.write(f"{card_info[0]}=0012722{card_info[1]}0000000\n")
    else:
        fwrite.write(f"{card_info[0]}=4912722{card_info[1]}0000000\n")

PS. Я бы сократил условие до:

    prefix = '0012722' if card_info[0][6:8] == '93' else '4912722'
    fwrite.write(f"{card_info[0]}={prefix}{card_info[1]}0000000\n")
→ Ссылка