2016-03-02 49 views
2
import re  
    rep_file = open('in2','r') 
    new_words = [] 
    for line in rep_file: 
     line = line.strip() 
     new_words.append(line + '.ec3') 

    infile = open('in.txt','r')  
    data = infile.read()  
    matches = re.findall(r'(opdut_decoded\.wav)',data)  
    i = 0  
    for m in matches: 

     data = re.sub(m,new_words[i],data,1) 
     i += 1 

    out = open('out.txt','w') 
    out.write(data)  
    out.close() 

這是使用其他文本文件。這個用於me.But如我在所述工作精細在一個文本文件重命名爲一個特定的詞(「opdut_decoded」)的示例代碼重命名在一個文本文件的特定行「輸入文件:」下面我需要在同一行中重命名同一個字(0a.ac3),無論「opdut_decoded」在那裏。請給我指導。使用python

在文本文件中的新名稱:

0A

1B

2C

3D

我與這些低於行的文本文件

-c0 -k2 -w1 -x1.0 -y1.0 -ia8.ac3 -opdut_decoded.wav,opdut_decoded.wav,opdut_decoded.wav 
-c0 -k2 -w1 -x1.0 -y1.0 -ia9.ac3 -opdut_decoded.wav,opdut_decoded.wav,opdut_decoded.wav 
-c0 -k2 -w1 -x1.0 -y1.0 -ia18.ac3 -opdut_decoded.wav 
-c0 -k2 -w1 -x1.0 -y1.0 -iLFE1.ac3 -opdut_decoded.wav 

我想通過「-opdut_decoded.wav」中的每一行,以取代上述給定的輸入線這樣

-c0 -k2 -w1 -x1.0 -y1.0 -ia8.ac3 -0a.ac3,0a.ac3,0a.ac3 
-c0 -k2 -w1 -x1.0 -y1.0 -ia9.ac3 -1b.ac3,1b.ac3,1b.ac3 
-c0 -k2 -w1 -x1.0 -y1.0 -ia18.ac3 -2c.ac3 
-c0 -k2 -w1 -x1.0 -y1.0 -iLFE1.ac3 -3d.ac3 

回答

1

代碼的前半部分是很好,但是當你讀in.txt文件,你應該逐行閱讀,然後進行替換。

import re 

new_words = [] 

rep_file = open('in2.txt','r') 

for line in rep_file: 
    line = line.strip() 
    new_words.append(line + '.ec3') 

infile = open('in.txt','r') 

i = 0 
out = open('out.txt','w') 

for inline in infile: 
    inline = re.sub('opdut_decoded\.wav',new_words[i],inline) 
    out.write(inline) 
    i += 1 

out.close() 

這個你應該得到的輸出您需要

-c0 -k2 -w1 -x1.0 -y1.0 -ia8.ac3 -0a.ec3,0a.ec3,0a。 EC3

-c0 -k2 -w1 -x1.0 -y1.0 -ia9.ac3 -1b.ec3,1b.ec3,1b.ec3

-c0 -k2 -w1 -x1.0 - y1.0 -ia18.ac3 -2c.ec3

-c0 -k2 -w1 -x1.0 -y1.0 -iLFE1.ac3 -3d.ec3

+0

謝謝。它工作正常 – lotus

+0

如果我在輸入文本文件中每行有2個名稱爲「opdut_decoded」和「op_dec_dmx」,您能幫助我嗎?我可以用上面的代碼重新命名爲新名稱。 – lotus

+0

@lotus我假設其中一個也是.wav。編輯'inline = re.sub('opdut_decoded \ .wav',new_words [i],inline)'通過添加由管道分隔的新模式。例如:'inline = re.sub('opdut_decoded \ .wav | op_dec_dmx \ .wav',new_words [i],inline)'希望這是你的意思。 – padme