Python: поиск и изменение элементов в записях фиксированной длины

Я очень новичок в программировании и на этой неделе попал в стену с обработкой файлов. У меня есть следующее приглашение:

Записи фиксированной длины

Вам будет передано имя файла P, имя F, фамилия L и новый день рождения B.

Загрузите файл записи фиксированной длины в P, найдите F,L в первом и измените день рождения на B.

Затем сохраните файл.

Входы предоставляются:

import sys
P= sys.argv[1] 
F= sys.argv[2]
L= sys.argv[3]
B= sys.argv[4]

Мой код:

file1 = open(P, 'r')

data = file1.read()


for i in range(0, len(data)):
  if F and L not in data: 
    data.append(i)
  if F and L in data: 
    data.replace(B,B)


file1 = open(P, 'w')
file1.write(data)
file1.close()

Это явно не работает, но у меня крутятся колеса. Мне нужно выяснить, как изменить B, но я не могу туда добраться. Это вывод:

Выход программы

Вывод вашей программы не соответствует ожидаемому.

Ваш вывод:

Адам Смит 11111985Теодор Андерсон
03201990Monty Biscuit-Barrel 10181980Адам Смитерс
10101960Рути Андерсон 06062010

Ожидаемый результат:

Адам Смит 11111985Теодор Андерсон
03201990Monty Biscuit-Barrel 10181980Адам Смитерс
00000000Рути Андерсон 06062010

Я не могу понять, как изменить день рождения на B.

2 ответа

Вот как я сделал это в испытании Codio, и он прошел проверку

import re #import regular expressions. Put under the "import sys"

file1 = open(P, 'r') 
data = file1.read() 
file1.close() 


found = re.findall(F + ' *' + L + ' *', data) 
chars = len(found[0])

beginChar = data.find(found[0])
birthday = data[beginChar + chars:beginChar + chars + 8]
data = data.replace(birthday, B)

file1 = open(P, 'w')
file1.write(data)

file1.close 

Надеюсь, это поможет!

Было бы полезно, если бы мы могли видеть аргументы, передаваемые программе.
Кроме того, в вашем цикле, когда вы проверяете:
if F and L not in data
Вы на самом деле говорите:
if F != None and L not in data
Попробуйте это вместо этого:
if F not in data and L not in data

Эта строка кажется одной проблемой: data.replace(B,B)Что значит заменить B с B?

Кроме того, что является data.append(i) делать? Вы добавляете целое число в конце прочитанных данных? Я не понимаю

Я хотел бы помочь, но я не понимаю, что вы делаете. Если вы разместили код где-то в Интернете и хотите поделиться им, отправьте ссылку на него. Также, как я и просил, вам нужно поделиться с нами файлом, который вы читаете, и некоторыми примерами данных, которые передаются, чтобы мы могли видеть, что происходит.

Другие вопросы по тегам