文件也妖娆,求助第二发!
下面是小鱼老师29课课后题,全文件查找替换,程序是可以运行的,我有两个疑问。fname=input('请输入文件名:')
str1=input('请输入被替换的内容:')
str2=input('请输入新的内容:')
f1=open('e://score//'+fname+'.txt')
countn=0
strn=''
for each in f1:
if str1 in each:
countn=countn+each.count(str1)
strn=strn+each.replace(str1,str2)
else:
strn=strn+each
f1.close()
print('文件%s中共有%s个%s' % (fname,countn,str1))
if countn==0:
print('未找到替换项!')
else:
rep=input('你确定要把所有的%s替换为%s吗?(yes/no):' % (str1,str2))
if rep=='yes':
f1=open('e://score//'+fname+'.txt','w')
f1.write(strn)
f1.close()
一、文件为什么不能以写的形式打开一次(文件本身会变成空白),而必须要读一次,写一次,晕。
二、for each这一段,我原来是这样写的:
for each in f1:
if str1 in each:
countn=countn+each.count(st1)
each.replace(str1,str2)
strn=strn+each
我觉得逻辑上没有问题啊,为什么打死了都不替换。。。
请大大们多多帮助! for each in f1:
if str1 in each:
countn=countn+each.count(str1)
each=each.replace(str1,str2)
strn=strn+each
第2个问题,改成这样就可以了,意思是列表方法可以对自身赋值,但字符串方法不可以自身赋值?是这样理解吗? 一、文件为什么不能以写的形式打开一次(文件本身会变成空白),而必须要读一次,写一次,晕。
因为写的模式打开会自动清空文件内容,一般用于新建文件并进行写入
二 list是可变类型,而string是不可变类型 哇,这个大好犀利啊,一击就中要害!赞! 可以只打开一次,用r+的模式就可以,一次性全部读出,然后替换,然后truncate文件,然后write就OK 凌九霄 发表于 2018-7-4 15:42
可以只打开一次,用r+的模式就可以,一次性全部读出,然后替换,然后truncate文件,然后write就OK
谢谢我的九霄大大,每次都可以让我多学一点,给你32个赞!:) fname=input('请输入文件名:')
str1=input('请输入被替换的内容:')
str2=input('请输入新的内容:')
f1=open('e://score//'+fname+'.txt','r+')
countn=0
strn=''
for each in f1:
if str1 in each:
countn=countn+each.count(str1)
each=each.replace(str1,str2)
strn=strn+each
print('文件%s中共有%s个%s' % (fname,countn,str1))
if countn==0:
print('未找到替换项!')
else:
rep=input('你确定要把所有的%s替换为%s吗?(yes/no):' % (str1,str2))
if rep=='yes':
f1.seek(0,0)
f1.truncate()
f1.write(strn)
f1.close() 谢谢九霄大大,直接多会用了两个方法,逻辑也清晰了很多 cable 发表于 2018-7-4 16:03
谢谢我的九霄大大,每次都可以让我多学一点,给你32个赞!:)
哈哈,不客气
页:
[1]