Как заменить строки в текстовом файле списком значений по порядку? - PullRequest
1 голос
/ 03 июня 2019

У меня есть текстовый файл, содержащий данные как:

****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 голосов
/ 03 июня 2019

Замените, используя re.sub по одному разу.

f1=f1.read()
for i in files:
    f1=re.sub('f\d.txt',i,f1,1)
print(f1,file=f2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...