|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def file_replace(file_name, rep_word, new_word):
- f_read = open(file_name) #打开文件
- content = [] #需修改的new_word
- count = 0
- count_1 = 0 #记录rep_word出现次数
- for eachline in f_read: #每一行遍历
- if rep_word in eachline:
- count = eachline.count(rep_word) #返回rep_word的字符串里边出现的次数
- if count == 1:
- count_1 += 1
- eachline = eachline.replace(rep_word, new_word)
- content.append(eachline)
- decide = input('\n文件 %s 中共有%s个【%s】\n您确定要把所有的【%s】替换为【%s】吗?\n【YES/NO】:' % (file_name, count_1, rep_word, rep_word, new_word))
- if decide in ['YES', 'Yes', 'yes']:
- f_write = open(file_name, 'w')
- f_write.writelines(content)
- f_write.close()
- f_read.close()
- file_name = input('请输入文件名:')
- rep_word = input('请输入需要替换的单词或字符:')
- new_word = input('请输入新的单词或字符:')
- file_replace(file_name, rep_word, new_word)
复制代码
上面是小甲鱼的代码,我的问题是writelines写入的时候怎么定位到“愿”这个字,而且替换成“希望”的。
writelines这个方法在小甲鱼发的文章中不是只有向文件写入字符串序列seq吗?
第29讲的链接:http://bbs.fishc.com/thread-45487-1-2.html
这个代码的思路是这样的:
打开文件以后,遍历文件内容(一行一行地检查)
比如我检查完这一行以后,统计出来有多少处替换,然后我把这行字符串做好替换(可以看到用了eachline.replace)以后,新的已经替换好了的内容加入到content这个列表里面。
最后用户确认要修改以后,一行一行地把content中的内容写进文件。(可以看到writelines的参数是content)
所以你说的定位问题,writelines是不会定位替换的,它只负责把内容seq一行一行地写入文件。
定位和替换是在遍历那部分就做了,
定位是if rep_word in eachline(其实没有定位在第几个字出现)
替换是eachline.replace()
|
|