Skip to main content
 首页 » 编程设计

python之使用输入更改文件的一部分之python

2025年05月04日22jirigala

在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)