从文本文件中删除特定字符串(非行)Python

4 投票
3 回答
15633 浏览
提问于 2025-04-17 00:47

我有一个文本文件,里面有两行内容:

<BLAHBLAH>483920349<FOOFOO>
<BLAHBLAH>4493<FOOFOO>

这就是文本文件里唯一的内容。现在我想用Python来修改这个文本文件,把每一行中的BLAHBLAH和FOOFOO去掉。这个任务看起来很简单,但我重新复习了一下文件操作,发现找不到方法来做到这一点。
非常感谢你的帮助!:)

谢谢!

3 个回答

1

考虑一下正则表达式模块 re。

result_text = re.sub('<(.|\n)*?>',replacement_text,source_text)

<>之间的字符串会被识别出来。这个过程是非贪婪的,也就是说,它会尽量选择最短的字符串。例如,如果你有"<1> text <2> more text",一个贪婪的解析器会把"<1> text <2>"都选上,但一个非贪婪的解析器只会选"<1>""<2>"

当然,你的replacement_text会是'',而source_text则是文件中的每一行。

5

如果你说的是一个文本文件,而不是HTML、XML或其他格式,那就直接用replace方法吧:

for line in infile.readlines():
    cleaned_line = line.replace("BLAHBLAH","")
    cleaned_line = cleaned_line.replace("FOOFOO","")

然后把cleaned_line写入一个输出文件中。

5
f = open(path_to_file, "w+")

f.write(f.read().replace("<BLAHBLAH>","").replace("<FOOFOO>",""))
f.close()
f = open(path_to_input_file, "r")
output = open(path_to_output_file, "w")

output.write(f.read().replace("<BLAHBLAH>","").replace("<FOOFOO>",""))
f.close()
output.close()

更新(保存到另一个文件):

撰写回答