关于代码问题
file_name=input("请输入文件名:")f=open('file_name','w+')
yuan=str(input("请输入需要替换的单词或字符:"))
ti=str(input("请输入新的单词或字符:"))
list1=list(f)
length=len(list1)
count=0
for i in range(length):
if 'list'=='yuan':
count+=1
print("文件",file_name,"中共有",count,"个",yuan)
print("您确定要把所有的【",yuan,"】替换为【",ti,"】吗?")
answer=input("【Yes/No】:")
if answer=="Yes":
for i in range(length):
if list1==yuan:
list1=ti
f.close()
代码功能是将指定的字符全部换成另一个字符,想请教一下大家,这个代码哪有问题啊?为什么执行出来都只显示有0个需要替换的?求指教,谢谢 本帖最后由 liuzhengyuan 于 2020-7-12 22:00 编辑
错误1:
f=open('file_name','w+')这一行,你的 file_name 加了引号
使程序的意思变成了 打开一个名叫 'file_name' 的文件
错误2:
你直接使用 w 模式打开,源文件里的内容就全部没有了(使用 w 打开无法做到读取文件内容)
应该先使用,r 模式先读取文件,然后再由 w 模式写入
错误3:
这句话……:
if 'list'=='yuan':
count+=1 'list' 绝对是不等于 'yuan', 的(因为都是字符串)
看你这两句的意思应该是想把 f 文件中的所有字符变成列表,但是不用 r 模式打开,不用 read() 根本无法做到读取文件
(f 只是一个对象,而不是字符串,要使用 r 模式打开之后,然后 f.read() 才能做到文件读取)
list1=list(f)
length=len(list1) 本帖最后由 Twilight6 于 2020-7-12 21:56 编辑
错误1:
你将 open 里面的 file_name 加上引号是指打开名为 file_name 文件了,而且 你 w 打开会导致覆盖你的文件为空文件
错误2:
if 'list'=='yuan': 都加上了引号,表示的是这两个字符串是否相等
显然不相等,而且这里这样的判断没用,因为list1 里面的是文件一行一行的字符串内容,而判断你输入的部分字符
错误就不说了,楼上好像总结的差不多了,参考下下面的代码吧:
file_name=input("请输入文件名:")
f=open(file_name)
yuan=input("请输入需要替换的单词或字符:")
ti=input("请输入新的单词或字符:")
list1=list(f)
f.close()
length=len(list1)
count=0
for i in range(length):
if yuan in list1:
count += list1.count(yuan)
list1 = list1.replace(yuan,ti)
print("文件",file_name,"中共有",count,"个",yuan)
print("您确定要把所有的【",yuan,"】替换为【",ti,"】吗?")
answer=input("【Yes/No】:")
if answer=="Yes":
f = open(file_name, 'w')
f.writelines(list1)
f.close()
页:
[1]