我对编程非常陌生,并且在本周处理了文件处理问题。我有以下提示:
固定长度记录
您将传递文件名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,但不能完全实现。这是输出:
节目输出
您的程序输出与预期输出不匹配。
你的输出:
Adam Smith 11111985 Theodore Anderson
03201990Monty Biscuit-Barrel 10181980Adam Smithers
10101960Ruthy Anderson 06062010预期产出:
Adam Smith 11111985 Theodore Anderson
03201990Monty Biscuit-Barrel 10181980Adam Smithers
00000000Ruthy Anderson 06062010
我无法弄清楚如何将生日改为B.
答案 0 :(得分:0)
如果我们能够看到传递给程序的参数,那将会有所帮助。
此外,在您的循环中,当您测试:
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
答案 1 :(得分:0)
这一行似乎是一个问题:data.replace(B,B)
用B
替换B
是什么意思?
另外,data.append(i)
在做什么?您在读取的数据末尾添加了一个整数?我不明白。
我想帮忙,但我不明白你在做什么。如果您已在网上某处发布了代码,并且可以轻松共享,请发送链接。另外,根据我的要求,您需要与我们分享您正在阅读的文件,以及传入的一些示例数据,以便我们可以看到发生了什么。
答案 2 :(得分:0)
这是我在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
希望这对您有帮助!