Python:查找和更改固定长度记录中的元素

时间:2017-12-01 05:14:53

标签: python fixed-length-record

我对编程非常陌生,并且在本周处理了文件处理问题。我有以下提示:

  

固定长度记录

     

您将传递文件名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.

3 个答案:

答案 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 

希望这对您有帮助!