python课后习题求助
编写一个程序,实现“全部替换”功能。#全部替换
def file_replace(file_name,old,new):
f=open(file_name)
count=0 #计数
content=[]
list=[]
for eachline in f:
if old in eachline:
count=eachline.count(old)
list.append(count)
print(list)
eachline=eachline.replace(old,new)
for each in list:
count+=each
print(count)
print('count:%d'%count)
content.append(eachline)
if count>0:
res=input(print('文件%s有%d处%s,确定全部替换为%s么? yes or no ?'%(file_name,count,old,new)))
if res in ['YES', 'Yes', 'yes']:
f_write=open(file_name,'w')
f_write.writelines(content)
f_write.close()
print('替换成功,请检测文件内容噢')
else:
print('文件中无此单词,无效替换')
f.close()
file_name = input('请输入文件名:')
old = input('请输入需要替换的单词或字符:')
new = input('请输入新的单词或字符:')
file_replace(file_name, old, new)
text文件内容:
hi hi hi
hi hi
问题:为啥count算出来是7?
本帖最后由 _荟桐_ 于 2020-6-7 18:35 编辑
改成:
for eachline in f:
if old in eachline:
a =eachline.count(old)
list.append(a)
print(list)
eachline=eachline.replace(old,new)
for each in list:
count+=each
print(count)
print('count:%d'%count)
content.append(eachline)
第一次for和第二次for循环的count变量重名了
第一次for循环之后count等于2
然后在第二次for循环里count又加3,加2
所以最后就是7
而且变量名不要用list for eachline in f:
if old in eachline:
count=eachline.count(old) #这里你改变了count的值也就是说,在最后一个循环count=2了
list.append(count)
print(list)
eachline=eachline.replace(old,new)
for each in list:
count+=each
print(count)
print('count:%d'%count)
content.append(eachline)
本帖最后由 Twilight6 于 2020-6-7 18:49 编辑
for each in list:
count+=each
print(count)
print('count:%d'%count)
这个for循环没意义,可以去掉,统计数量的用第一个for循环即可,也是因为这个循环导致你统计出错,还有就是count 每次循环应该 += 而不是 =
content.append(eachline) 写入文件要将替换后的文本加入列表,要写在循环里,你写到了循环外
res=input(print('文件%s有%d处%s,确定全部替换为%s么? yes or no ?'%(file_name,count,old,new)))
这里因为print 没有返回值,所以会返回一个None ,你可用把 print 去掉
完整代码:
#全部替换
def file_replace(file_name,old,new):
f=open(file_name)
count=0 #计数
content=[]
for eachline in f:
if old in eachline:
count+=eachline.count(old)
eachline=eachline.replace(old,new)
content.append(eachline)
if count>0:
res=input('文件%s有%d处%s,确定全部替换为%s么? yes or no ?'%(file_name,count,old,new))
if res in ['YES', 'Yes', 'yes']:
f_write=open(file_name,'w')
f_write.writelines(content)
f_write.close()
print('替换成功,请检测文件内容噢')
else:
print('文件中无此单词,无效替换')
f.close()
file_name = input('请输入文件名:')
old = input('请输入需要替换的单词或字符:')
new = input('请输入新的单词或字符:')
file_replace(file_name, old, new)
页:
[1]