Python 替换文本中匹配的字符串
从作为输入的文本文件中,我需要替换在输入列表中找到的单词。 输出是相同的文本文件,但找到的单词需要替换为,例如:Python 替换文本中匹配的字符串,python,string,match,Python,String,Match,从作为输入的文本文件中,我需要替换在输入列表中找到的单词。 输出是相同的文本文件,但找到的单词需要替换为,例如:matached\u word。 我已经为此构建了一系列循环,但是我不能复制相同的文本文件。我尝试使用一个20行的字符串文本文件,但输出中有数百万行重复 这里有一个例子。 输入文本文件可以是: bucharest sdfsadf sofia sdf sdf dsf vienna etc etc can sdfds 22 rdf fd paris Paris 我尝试的代码是: #
matached\u word
。
我已经为此构建了一系列循环,但是我不能复制相同的文本文件。我尝试使用一个20行的字符串文本文件,但输出中有数百万行重复
这里有一个例子。
输入文本文件可以是:
bucharest sdfsadf
sofia sdf sdf dsf
vienna etc
etc
can
sdfds
22
rdf
fd
paris
Paris
我尝试的代码是:
# input files
input_file = r"....\input_txt_test.txt"
list_names = ["Bucharest", "bucharest", "vienna", "Paris", "buc"]
out_file = r"....\output_txt_test.txt"
# Perform replacement
with open(out_file, 'w') as outfile:
with open(input_file, 'r') as f:
text = f.readlines()
for line in text:
line_sp = line.split(" ")
for name in list_names:
for word in line_sp:
if name in word:
strreplace = '''<repl>%s</repl>''' % name
repl = line.replace(name, strreplace)
outfile.write(repl)
else:
outfile.write(line)
#输入文件
input_file=r“…\input_txt_test.txt”
名单名称=[“布加勒斯特”、“布加勒斯特”、“维也纳”、“巴黎”、“布加勒斯特”]
out\u file=r“…\output\u txt\u test.txt”
#更换
将打开的(out_文件,'w')作为输出文件:
打开(输入_文件,'r')作为f:
text=f.readlines()
对于文本中的行:
line_sp=line.split(“”)
对于列表中的名称\u名称:
对于第_sp行中的单词:
如果名称为word:
strreplace=''%s''%name
repl=line.replace(名称、strreplace)
outfile.write(repl)
其他:
输出文件。写入(行)
我期望这个输出:
<repl>bucharest</repl> sdfsadf
sofia sdf sdf dsf
<repl>vienna</repl> etc
etc
can
sdfds
22
rdf
fd
paris
<repl>Paris</repl>
布加勒斯特sdfsadf
索非亚自卫队
维也纳等
等
可以
电双凸极
22
rdf
fd
巴黎
巴黎
但我得到的是:
bucharest sdfsadf
bucharest sdfsadf
<repl>bucharest</repl> sdfsadf
bucharest sdfsadf
bucharest sdfsadf
bucharest sdfsadf
bucharest sdfsadf
bucharest sdfsadf
<repl>buc</repl>harest sdfsadf
bucharest sdfsadf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
sofia sdf sdf dsf
vienna etc
vienna etc
vienna etc
vienna etc
<repl>vienna</repl> etc
vienna etc
vienna etc
vienna etc
vienna etc
vienna etc
etc
etc
etc
etc
etc
can
can
can
can
can
sdfds
sdfds
sdfds
sdfds
sdfds
22
22
22
22
22
rdf
rdf
rdf
rdf
rdf
fd
fd
fd
fd
fd
paris
paris
paris
paris
paris
ParisParisParis<repl>Paris</repl>Paris
布加勒斯特sdfsadf
布加勒斯特自卫队
布加勒斯特自卫队
布加勒斯特自卫队
布加勒斯特自卫队
布加勒斯特自卫队
布加勒斯特自卫队
布加勒斯特自卫队
布加勒斯特自卫队
布加勒斯特自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
索非亚自卫队
维也纳等
维也纳等
维也纳等
维也纳等
维也纳等
维也纳等
维也纳等
维也纳等
维也纳等
维也纳等
等
等
等
等
等
可以
可以
可以
可以
可以
电双凸极
电双凸极
电双凸极
电双凸极
电双凸极
22
22
22
22
22
rdf
rdf
rdf
rdf
rdf
fd
fd
fd
fd
fd
巴黎
巴黎
巴黎
巴黎
巴黎
帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯帕里斯
此外,我在列表名称中有“buc”字符串,但没有与该字符串匹配的单词,它仍然被插入到输出文件中。
如何执行此匹配和文件写入?谢谢 读取您的文件并将输入的单词替换为单词
yourListOfWords = ['a','b','c']
yourFile = open('PATH','r')
newFile = open('PATH_NEW','w')
yourFile.read().splitlines()
for line in yourFile:
for word in yourListOfWords:
newline = line.replace(word,'<rep>'+word+'</rep>')
newFile.writelines(newline +"\n")
yourListOfWords=['a','b','c']
yourFile=open('PATH','r'))
newFile=open('PATH\u NEW','w')
yourFile.read().splitlines()
对于文件中的行:
对于单词列表中的单词:
换行符=行。替换(单词“”+单词+“”)
newFile.writelines(换行符+“\n”)
在这里,您可以阅读input.txt中每一行的行
,如果您在给定的列表名称
中找到一个单词,您可以用一个新单词替换行
中的该单词。之后,将行
保存到输出文件并继续检查:
# input files
input_file = r"....\input_txt_test.txt"
list_names = ["Bucharest", "bucharest", "vienna", "Paris", "buc"]
out_file = r"....\output_txt_test.txt"
# Perform replacement
with open(out_file, 'w') as outfile:
with open(input_file, 'r') as f:
text = f.readlines()
for line in text:
line_sp = line.split(" ")
for word in line_sp:
if word in list_names:
replaced_word = "<repl>{}</repl>".format(word)
line = line.replace(word, replaced_word)
outfile.write(line)
#输入文件
input_file=r“…\input_txt_test.txt”
名单名称=[“布加勒斯特”、“布加勒斯特”、“维也纳”、“巴黎”、“布加勒斯特”]
out\u file=r“…\output\u txt\u test.txt”
#更换
将打开的(out_文件,'w')作为输出文件:
打开(输入_文件,'r')作为f:
text=f.readlines()
对于文本中的行:
line_sp=line.split(“”)
对于第_sp行中的单词:
如果列表中的单词名称:
替换的_word=“{}”。格式(word)
行=行。替换(单词,替换的单词)
输出文件。写入(行)
outfile.write(line)
应该是outfile.write(word)
?我刚刚尝试了这个建议,它写了大约60行。每次比较两个单词时,你都要在输出文件中写一整行。因此,每一行都将以某种形式出现5*(字数)次。我会对f:line\u sp=line.strip()中的行执行。拆分(“”)
,而不是readlines
,以避免将其全部读入内存。