当前位置: 首页 > article >正文

Python Cookbook-2.3 搜索和替换文件中的文本

任务

需要将文件中的某个字符串改变成另一个。

解决方案

字符串对象的 replace 方法提供了字符串替换的最简单的办法。下面的代码支持从一个特定的文件(或标准输入)读取数据,然后写人一个指定的文件(或标准输出):

importos,sys
nargs = len(sys.argv)
if not 3<= nargs <= 5 :
	print "usage: $s search_text replace_text [infile [outfile]]" %\
	os.path.basename(sys.arqv[0])
else:
	stext = sys.arqv[1]
	rtext = sys.argv[2]
	input_file =sys.stdin
	output_file = sys.stdout
	if nargs >3:
		input_file = open(sys.argv[3])
	if narqs >4:
		output_file = open(sys.argv[4],"w')
	for s in input_file:
	output_file.write(s.replace(stext,rtext))
	output.close()
	input.close()

讨论

本节给出的解决方案非常简单,但那也正是精彩的地方——如果简单的东西已经够用了,为什么要用复杂的东西?正如开始的“shebang”(shell 头描述)行所示,这个脚本是一个简单的主脚本,而不是那些被用来导人的模块,它直接运行在一个 shell 命令行提示中。脚本检查传递给它的参数以确定要搜索的文本,用于替代的文本,输入文件(默认是标准输入),输出文件(默认是标准输出)。然后循环遍历输入文件中的每一行完成了对每行文本的字符串替换之后,再写入到输出文件。这就结束了。准确点说最后还关闭了所有的文件。

如果内存充裕到能够轻松放入两份输人文件(一份是原版的,另一份是完成了替代之后的,因为字符串是不能被改变的,所以必须有两个拷贝),我们就可以进一步地提高速度。一次性完成对所有内容的处理,而不用循环。今天的低端计算机至少都有 256MB以上的内存,处理一个 100MB 左右的文件并不是什么问题,而且处理超过100MB的文件的情况也很少。所以,我们也可以用一行语句替换掉那个循环:

output_file.write(input_file.read().replace(stext, rtext))

http://www.kler.cn/a/555753.html

相关文章:

  • macos sequoia 禁用 ctrl+enter 打开鼠标右键菜单功能
  • 共筑金融数字化新生态!YashanDB与恒生电子完成兼容互认证
  • 计算机视觉基础|卷积神经网络:从数学原理到可视化实战
  • OpenSSL has been compiled without RC2 support
  • kafka-集群扩容
  • import requests Pycharm 报错
  • C++,设计模式,【工厂方法模式】
  • 使用AI创建流程图和图表的 3 种简单方法
  • 【C语言】fgetpos函数用法介绍
  • 【设计模式】【创建型模式】抽象工厂模式(Abstract Factory)
  • 计算机组成原理——输入/输出系统(十七)
  • Windows安装node.js详细教程
  • 基于 PyQt5 实现分组列表滚动吸顶效果
  • 索引有哪些缺点以及具体有哪些索引类型
  • Windows 下 Ollama 安装deepseek本地模型
  • Git中revert和reset区别?
  • 【工具篇】【深度解析 DeepAI 工具:开启 AI 应用新体验】
  • 2025年度福建省职业院校技能大赛高职组“信息安全管理与评估”赛项规程
  • 高防服务器的适用场景有哪些?
  • SQL Server 中行转列