如何使用python替换文本文件中特定单词附近的单词

时间:2016-03-04 10:43:45

标签: python-2.7

这是我在示例代码中查找文本文件中所有行中的特定单词“dut_decoded”,并逐行替换为另一个文本文件(逐行新名称)   进口重新     new_words = []

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

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

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

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

for inlines in infile:
    inlines = re.sub('dut_decoded',new_words[i],inlines)
    out.write(inlines)
    i += 1
out.close()
infile.close()

但是,我需要用新名称替换所有行中“out =”这个词附近的单词。 例如,我有一个带有这些行的文本文件

1 .-- bass_cut_off = 45 - OUT = sys_alg_oar_bass_extraction_BE45_SR32k0_IN8B0O_SP8F0H.wav

2 .-- bass_cut_off = 0 --out = sys_alg_oar_all_beds_IN10B0O_SP10F2H.wav

3 .-- bass_cut_off = 8 - OUT = sys_alg_oar_bass_extraction_BE80_SR44k1_IN8B0O_SP8F0H.wav

这里我需要在第一行中替换“out =”附近的一个单词(sys_alg_oar_bass_extraction_BE45_SR32k0_IN8B0O_SP8F0H.wav)。就像这个过程需要在所有行中替换一样。新名称来自我的代码中的“infile”。 这个“infile”有以下这些行。

  1. 100

  2. 101

  3. 103

  4. 像这样。最后我想要这样的输出。

    1 .-- bass_cut_off = 45 - 出= 100

    2 .-- bass_cut_off = 0 --out = 101

    3 .-- bass_cut_off = 8 - 出= 102

    请你指导我。

1 个答案:

答案 0 :(得分:1)

正则表达式库具有替换匹配部分re.sub( pattern, repl, string )

的功能

使用前瞻(?=...)和lookbehinds(?< = ...)

re.sub( "(?<=--out=)(.+)(?=\s)", "something", "--bass_cut_off=0 --out=sys_alg_oar_all_beds_IN10B0O_SP10F2H.wav" )

导致

'--bass_cut_off=0 --out=something'

在这个例子中,我也可以使用否定前瞻(?!...)。同样,您可以使用模式"(?<=--out=)(\w+)",它会匹配到单词结尾,从而留下".wav"后缀

'--bass_cut_off=0 --out=something.wav'

在此示例中等效于"(?<=--out=)(.+)(?=.wav)"