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)
делать? Вы добавляете целое число в конце прочитанных данных? Я не понимаю
Я хотел бы помочь, но я не понимаю, что вы делаете. Если вы разместили код где-то в Интернете и хотите поделиться им, отправьте ссылку на него. Также, как я и просил, вам нужно поделиться с нами файлом, который вы читаете, и некоторыми примерами данных, которые передаются, чтобы мы могли видеть, что происходит.