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")