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

How to replace a words near the specific word in a text file using python

这是我的示例代码,用于在文本文件的所有行中查找特定单词"dut-decoded",并用另一个文本文件(一行一行地具有新名称)逐行替换为引用。进口再新单词=

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.-低音切断=45--输出=系统ALG桨低音提取

2.-低音切断=0--输出=系统警报所有床位输入10b0ou sp10f2h.wav

3.-低音切断=8--输出=系统ALG桨低音提取

这里我需要替换一个单词(sys-alg-oar-bass-extraction-be45-sr32k0-in8b0o-sp8f0h.wav),在第一行"out="附近。就像这个过程需要在所有行中替换。新的名称是从我的代码中的"infile"开始的。这个"内鬼"在下面有这些线。

  • 一百

  • 一百零一

  • 一百零三

  • 像这样。最后我想要这些输出像这样。

    1.-低音断开=45--断开=100

    2.-低音断开=0--断开=101

    3.-低音断开=8--断开=102

    你能指导我做这个吗?


    正则表达式库具有替换匹配re.sub(pattern、repl、string)部分的函数。

    使用lookaheads (?=...)和lookbehinds(?<=)

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

    导致

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

    在这个例子中,我还可以使用一个负的前瞻(?!...)。类似地,您可以使用模式"(?<=--out=)(\w+)",它将匹配到单词结尾,从而留下".wav"后缀。

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

    在这个例子中,等价于"(?<=--out=)(.+)(?=.wav)"