在txt文件中,数据是这样写的:
- A1|礼堂1|Prote G
- A2|礼堂1|Prote G
A1代表观众席标签,Auditorium1代表描述,Prote G代表地址。现在,我想制作用新标签替换礼堂标签的功能。我想使用输入:
def label_change():
label_old = input("Enter label u wanna change: ")
label_new = input("Enter new one: ")
with open("aud.txt","r") as f1:
for i in f1.readlines():
r = i.split("|")
label = r[0]
desc = r[1]
adr = r[2]
if label_old == label:
label_new = label
#now not sure how to continue
例如,如果我输入 A1 作为旧标签,输入 A5 作为新标签,我能否以某种方式将 A1 替换为 >A5 不删除或更改我文件中的描述和地址?在此之后,我尝试以“w”模式打开文件,这样我就可以写了,但是它删除了每一行,而“a”模式添加了整行而不是更改想要的标签。有没有更简单的方法?
请您参考如下方法:
你只需要写回一个文件,你可以在与 f1 相同的行中打开它,然后使用 f2.write() 向它写一个新行:
def label_change():
label_old = input("Enter label u wanna change: ")
label_new = input("Enter new one: ")
with open("aud.txt","r") as f1, open("aud2.txt", "w") as f2:
for i in f1.readlines():
r = i.split("|")
label = r[0]
desc = r[1]
adr = r[2]
if label_old == label:
label = label_new
f2.write(label + "|" + desc + "|" + adr)
为了写入同一个文件,您可以将内容保存到列表中并写入:
def label_change():
label_old = input("Enter label u wanna change: ")
label_new = input("Enter new one: ")
contents = []
with open("aud.txt","r") as f1:
for i in f1.readlines():
r = i.split("|")
label = r[0]
desc = r[1]
adr = r[2]
if label_old == label:
label = label_new
contents.append(label + "|" + desc + "|" + adr)
with open("aud.txt", "w") as f1:
for line in contents:
f1.write(line)
