2007-07-06
Python Cookbook 2.3 在文件中进行查找和替换
需求:
要在文件中替换字符串.
讨论:
字符串替换在字符串处理中非常常见,可以使用string对象的replace方法来解决.我们在本节要做的工作是从文件中获取信息并保存到文件中去:
import os, sys
nargs = len(sys.argv)
if not 3 <= nargs <= 5:
print "usage: %s search_text replace_text [infile [outfile]]" % \
os.path.basename(sys.argv[0])
else:
stext = sys.argv[1]
rtext = sys.argv[2]
input_file = sys.stdin
output_file = sys.stdout
if nargs > 3:
input_file = open(sys.argv[3])
if nargs > 4:
output_file = open( sys.argv[4], 'w')
for s in input_file:
output_file.write( s.replace(stext, rtext))
output.close( )
input.close( )
本节非常简单,我们也没有比较把简单的问题讲的很复杂是不是?这个脚本分析输入参数,获得要替换的字符串,然后分别从文件中读取(或者标准输入),用循环处理替换字符串,再写入文件中(或标准输出),最后关闭了两个文件.
如果我们的内存能够容纳两个文件的大小,我们完全可以一次处理替换操作,这样对于小于100M的文件是没有问题的:
output_file.write(input_file.read( ).replace(stext, rtext))
这样可以更快捷的完成我们的需求.
要在文件中替换字符串.
讨论:
字符串替换在字符串处理中非常常见,可以使用string对象的replace方法来解决.我们在本节要做的工作是从文件中获取信息并保存到文件中去:
import os, sys
nargs = len(sys.argv)
if not 3 <= nargs <= 5:
print "usage: %s search_text replace_text [infile [outfile]]" % \
os.path.basename(sys.argv[0])
else:
stext = sys.argv[1]
rtext = sys.argv[2]
input_file = sys.stdin
output_file = sys.stdout
if nargs > 3:
input_file = open(sys.argv[3])
if nargs > 4:
output_file = open( sys.argv[4], 'w')
for s in input_file:
output_file.write( s.replace(stext, rtext))
output.close( )
input.close( )
本节非常简单,我们也没有比较把简单的问题讲的很复杂是不是?这个脚本分析输入参数,获得要替换的字符串,然后分别从文件中读取(或者标准输入),用循环处理替换字符串,再写入文件中(或标准输出),最后关闭了两个文件.
如果我们的内存能够容纳两个文件的大小,我们完全可以一次处理替换操作,这样对于小于100M的文件是没有问题的:
output_file.write(input_file.read( ).replace(stext, rtext))
这样可以更快捷的完成我们的需求.