2017-08-09 37 views
0

所以我有一个txt文件,看起来与此类似:替换可变文本固定后的文本

Patient Name   : John Don, 9989 
Patient ID   : 9989 
Comment    : Summation 
Date     : 09.08.2017 
Exported by   : Denver 
Type     : DVH 
Description   : Some random text 

我也有,我想改用其他名称列表。

所以基本上,我有几个在用相同的名字命名不同的文件夹,这些.txt文件,因为我会在我的名单,FX:

name_list = ["1", "1_NEW", "2", "3", "3_RE"] 

我想要做的事情是要改变无论列表中的任何值,Patient namePatient ID的值。

因此,例如,对于列表中的第一个元素,它将打开具有相同名称的文件夹,然后在该文件夹中打开.txt文件(始终保持同名),读取.txt文件并更改将Patient namePatient ID之后的值设置为列表的值。所以对于第一个我最终会:

Patient Name   : 1 
Patient ID   : 1 
Comment    : Summation 
Date     : 09.08.2017 
Exported by   : Denver 
Type     : DVH 
Description   : Some random text 

可以这样做吗?

+0

就像是文件名清单?即 - “1”,“1_NEW”,“2”,“3”,“3_RE”'?他们都在同一个父目录吗? – droravr

+0

我有一个目录用不同的名字填充+1000个文件夹。在所有这些文件夹中都有一个名称相同的.txt文件(如上所述)。以及所有这些文件夹名称都列在列表中。并且每个文件夹的列表值是我想要将“患者名称”和“患者ID”更改为的内容。 –

+0

当然可以做到,但是我可以问一下,你是如何以这种结构结束的?将它们放入json,csv或者非常大的数据库会更有效率? –

回答

1

很公平,这里是一个代码,例如,你可以使用:

被警告,虽然,因为这可能会覆盖文件(其中一个文件试试)

for file in ["1"]: 

    # Read file 
    with open("{0}/{0}.txt".format(file)) as f: 
     filecontent = [i.strip("\n") for i in f.readlines()]  

    # Update first and second row 
    filecontent[0] = filecontent[0].split(":")[0] + ": {}".format(file) 
    filecontent[1] = filecontent[1].split(":")[0] + ": {}".format(file) 

    # Ovewrite old file and write 
    with open("{0}/{0}.txt".format(file), "w") as f: 
     string = '\n'.join(filecontent) 
     f.write(string) 
     # print(string) 
+0

哇,这真的有诀窍。是的,它覆盖了。但那完全没错。非常感谢。 –