如何用列表值顺序替换文本文件中的字符串?

时间:2019-06-03 03:37:55

标签: python python-3.x string list replace

我有一个文本文件,其中包含以下数据:

****File1*****
a     jhk
b     hfd
file  f1.txt     ;file open
hh       dsfsd        
----
qqw      adas
file    f2.txt     ;file open
hjh     dfd


****File2*****
d     sdfsd
b     sdfsd
file   f3.txt     ;file open
sada     dsfsd        
----
qqw     sdfsd
file    f4.txt     ;file open
wqeq     dfd

我有一个列表

    files=['a.txt','b.txt','c.txt','d.txt']

我想用列表中的值顺序替换文本文件中的字符串(文件)。 例如:我希望将文本文件中的'f1.txt'替换为'a.txt',然后将'f2.txt'替换为'b.txt'...同样。

我尝试过的是:

fileName=input("Enter Input File Name: ")
f1=open(fileName,'r')
outFile=input("Enter Output File: ")
f2=open(outFile,'w')
nr=csv.reader((open("graphScript.csv")))
rn=0
b=[]
gFlag=0
global files
files=[]
for row1 in nr:
        b.append(row1)
        rn+=1
global nGraph
df=pd.read_csv("graphScript.csv")
files=list(df[df.columns[0]][4:])

for line in f1.readlines():
    word=line
    count = 0
    ----

    if re.search(r'/file',word):
        strplit=word.split()[1]
        for i in files:
            word=strplit.replace(strplit,i)
            f2.write(word)
    else:
           f2.write(word)

每当我运行此代码时,输​​出就会显示为:

    ****File1*****
    a     jhk
    b     hfd
    a.txtb.txtc.txtd.txt
    hh       dsfsd        
    ----
    qqw      adas
    a.txtb.txtc.txtd.txt
    hjh     dfd


    ****File2*****
    d     sdfsd
    b     sdfsd
    a.txtb.txtc.txtd.txt
    sada     dsfsd        
    ----
    qqw     sdfsd
    a.txtb.txtc.txtd.txt
    wqeq     dfd

我实际上想要的输出是:

****File1*****
a     jhk
b     hfd
file  a.txt     ;file open
hh       dsfsd        
----
qqw      adas
file    b.txt     ;file open
hjh     dfd


****File2*****
d     sdfsd
b     sdfsd
file   c.txt     ;file open
sada     dsfsd        
----
qqw     sdfsd
file    d.txt     ;file open
wqeq     dfd

该如何解决?

1 个答案:

答案 0 :(得分:-1)

一次替换re.sub

f1=f1.read()
for i in files:
    f1=re.sub('f\d.txt',i,f1,1)
print(f1,file=f2)