|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 jcx1117 于 2018-2-1 01:17 编辑
根据题目要求自己写的代码,打开文件“something.txt”,文件内容:
“《面朝大海,春暖花开》 作者:海子
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开”
要求将文件中“愿”替换成“希望”
结果执行结果:
“《面朝大海,春暖花开》 作者:海子
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
希望你有一个灿烂的前程
你有情人终成眷属
希望你在尘世获得幸福
只希望面朝大海,春暖花开”
百思不得其解,请老司机指点。
- # 4 替换文字
- #输入
- file_name = input("请输入文件名:")
- old_str = input("请输入需要替换的单词或字符:")
- new_str = input("请输入新的单词或字符:")
- count = 0
- file = open(file_name, 'r+')
- #替换
- def tihuan(x,y):
- local = 0
- global count
- for each_line in file:
- for each in each_line:
- if each == x:
- count += 1
- each_line = each_line.replace(x, y)
- print(each_line,end='')
- file.seek(local, 0)
- file.writelines(each_line)
- local = file.tell()
- # 输出
- tihuan(old_str, new_str)
- print("文件%s中共有%s个【%s】" % (file_name, count, old_str))
- print("您确定要把%s替换成%s吗?" % (old_str, new_str))
- answer = input("【YES/NO】:")
- if answer == "YES":
- file.close()
复制代码
这个错误算是一个比较常见的错误了。
python中这个for循环虽然好用,但是你却不能在循环的过程中去改变“容器”。
也就是说 【for each_line in file:】在这个循环之中,file是一个容器,每次循环都从里面提取一行。在循环之中你可以用file中的东西,但是却不能改变file中的东西,否则就会出现你的错误。
修改意见:
不要在for循环中直接修改file内容,把要修改的字符先放到一个列表里面保存起来,等循环结束在写入到file之中
|
|