在Python 3中协助处理文件

在Python 3中协助处理文件,python,scripting,Python,Scripting,我目前正在学习python脚本的入门课程,需要帮助。给出了以下变量 The file name -> P = test.txt firstname -> F = 'Ruthy' lastname -> L = 'Anderson' new birthday-> B = 00000000 目标是在文件中搜索给定的名字和姓氏,然后用“B”变量替换当前的生日。我们被告知每条记录的固定长度为40 下面是test.txt文件包含的内容 亚当·斯密11111 985西奥多·安德森0

我目前正在学习python脚本的入门课程,需要帮助。给出了以下变量

The file name -> P = test.txt
firstname -> F = 'Ruthy'
lastname -> L = 'Anderson'
new birthday-> B = 00000000
目标是在文件中搜索给定的名字和姓氏,然后用“B”变量替换当前的生日。我们被告知每条记录的固定长度为40

下面是test.txt文件包含的内容

亚当·斯密11111 985西奥多·安德森03201990蒙蒂饼干桶10181980亚当·斯密11111 900露丝·安德森06062010

这是迄今为止我所掌握的代码

file1 = open(P, 'r')
data = file1.read()
file1.close()
file2 = open(P, 'w')
recordLength = 40
start = 0
records = []

while((len(data) - start) >= recordLength):
 record = data[start:start + recordLength]
 records.append(record)
 start+= recordLength

for i in range(0, len(records)):
 if re.seatch(F, data) and re.search(L, data):
  data = re.sub('10101960', B, data)

file2.write(data)
file2.close()

IIUC我的方法如下:

# P = 'test.txt'
# F = 'Ruthy'
# L = 'Anderson'
# B = '00000000'

with open(P, 'r+') as f:
    while True:
        rec = f.read(40)
        if rec:
            if rec.startswith(f'{F} {L}'):
                pos = f.tell()
                f.seek(pos-8)
                f.write(B)
                break
        else:
            break

请@Koolwhip,复习。您应该添加一个您尝试的可验证示例。如果没有,它将被标记为非主题。阅读->问题的第3点要求家庭作业帮助必须包括到目前为止你为解决问题所做工作的总结,以及对你解决问题的困难的描述。另外,请用输入数据等创建一个最小的可验证示例。请帮助我们帮助您。我为缺少信息而道歉。我已经更新了帖子,希望它能给你所有你需要的东西。请让我知道还需要什么。如果您的记录是固定长度的,这将使您有机会更改文件中的数据,因为您确切知道存储哪种数据。另外,您没有将示例格式化为代码-记录之间是否有换行符?@koolwip。这里有两点需要检查:你说每条记录有40个字符。但事实上:亚当·斯密11111985