如何使用CSV文件仅替换文本文件中的某些字符串

时间:2019-06-19 05:07:06

标签: regex python-3.x string file replace

我有一个csv文件(script.csv),该文件用作替换多个文件中字符串的脚本。 asease文件是图形文件。每个文件的图形数量在csv文件中指定。 对于第一个文件,图形数量为1。对于第二个文件-3个图,对于第三个文件-2个图,对于第四个文件-4个图,对于第五个文件-1个图,....同样。

csv(script.csv)中的数据

df_exp(229.0776,246.1691,...)

假设x4.txt是四个图形文件。然后我使用正则表达式搜索要替换的字符串的位置。然后我找到了五个要替换的地方,但是我只需要替换四个地方。 例如 :         如果re.search(r'/ et y',字符串):             打印(字符串)

df_sim(229.1183, 246.1448,...)

包含要替换的字符串的输入文件:

     Number of Graphs   1       3       2       4       1
         ---            --      --      --      --      --
     y_title           y1       y1      y1      y1      y1
                                y2      y2      y2
                                y3              y3
                                                y4

我希望输出为

 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

该如何解决?

0 个答案:

没有答案