缓缓归来 发表于 2020-7-12 21:36:22

关于代码问题

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 21:41:46

本帖最后由 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:54:49

本帖最后由 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]
查看完整版本: 关于代码问题