У меня есть CSV-файл (script.csv), который используется в качестве сценария для замены строк в нескольких файлах.Thease файлы являются графическими файлами.Количество графиков для каждого файла указано в CSV-файле.Для первого файла количество графиков равно 1.Для второго файла - 3 графика, Для третьего файла - 2 графика, Для четвертого файла - 4 графика, Для 5-го графика файла - 1, аналогично.
Данные в csv (скрипт.csv)
Number of Graphs 1 3 2 4 1
--- -- -- -- -- --
y_title y1 y1 y1 y1 y1
y2 y2 y2
y3 y3
y4
Предположим, x4.txt - это файл из четырех графиков.Затем я ищу места для замены строки с помощью регулярного выражения.Тогда я нашел пять мест для замены, но мне нужно заменить только 4 места.Например: если re.search (r '/ et y', строка): print (строка)
df=pd.read_csv("script.csv")
class Update:
ytCount=0
def file_read(self):
f1 = open(inpFile, 'r')
f2 = open(outFile, 'w')
for line in f1.readlines():
string=line
if re.search(r'/et y', string):
self.y_axis_title(string,f2)
else:
f2.write(string)
def y_axis_title(self,string,f2):
if nGraphs==1:
self.ytCount=0
if self.ytCount == 0:
word = self.y_change_title(string, ''.join(y_title))
f2.write(word)
else:
for i in range(self.ytCount,nGraphs):
if self.ytCount==i:
word=self.y_change_title(string,y_title[i])
f2.write(word)
if self.ytCount==nGraphs-1:
self.ytCount=0
else:
self.ytCount+=1
def y_change_title(self,string,ytitle):
strplt=string.split()
word = strplt[0] + " " + strplt[1] + " " + strplt[2][0] + ytitle + " "+strplt[2][0] + "\t" + ' '.join(strplt[4:6]) + "\n"
return word
obj=Update()
colCount=((df.count(axis=1)[0])-1)
for i in range(colCount):
nGraphs=int(df.columns[2:][i][0])
inpFile=df[df.columns[2:][i]][0]
outFile=df[df.columns[2:][i]][0]+"_out"
if nGraphs == 1:
y_title = list(df[df.columns[2:][i]][5]) // y_tiltle in 5th row
elif nGraphs==2:
y_title=list(df[df.columns[2:][i]][6:8]) // y_tiltle in 6 to 7 row
elif nGraphs==3:
y_title = list(df[df.columns[2:][i]][7:10]) // y_tiltle in 7 to 9 row
elif nGraphs == 4:
y_title = list(df[df.columns[2:][i]][8:12]) // y_tiltle in 8 to 11 row
obj.file_read()
Входной файл, содержащий заменяемые строки:
/et y "HHJKLJ" ;axis title
/et y "SDFSDF" ;axis title
/et y "STSTS" ;axis title
/et y "uiuhig" ;axis title
/et y "fgfjhgjhg" ;axis title
Я хочумой вывод как
/et y "y1" ;axis title
/et y "y2" ;axis title
/et y "y3" ;axis title
/et y "y4" ;axis title
/et y "fgfjhgjhg" ;axis title
Но что я на самом деле получаю:
/et y "y1" ;axis title
/et y "y2" ;axis title
/et y "y3" ;axis title
/et y "y4" ;axis title
/et y "y1" ;axis title
I dont to replace the fifth string in y1 I want only to replace upto fourth, for the fifth string just write what is in the input file.
Как это исправить?