Curry30huang 发表于 2020-8-8 09:07:19

是什么原因导致无法字符串替换的

file1=input("输入文件名:")
index=input("请输入需要替换的字符:")
change=input("请输入新的字符:")
count=0
list_a=[]
with open(file1) as file_a:
    for a in file_a:#现在就是对每行数据字符串修改,然后全都保存到列表中,之后覆盖原文件
      #不可以用切片操作,切片不能修改列表,且字符串的切片只是调用不可修改,列表切片才能修改且会改变原列表
      #所以要采用.replace(原内含的字符串,新字符串)
      if index in a:
            a.replace(index,change)
            count+=a.count(index)#因为一行中可能有很多个index不能只是加一
      list_a.append(a)
    print("文件中一共有{}个【{}】".format(count,index))
    print(list_a)
    judge=input("确定将所有的{}替换为{}吗?".format(index,change))
    if judge in ["yes","YES","Yes"]:#这样更好,多种选择都行
      with open(file1,"w") as fil_b:
            for i in list_a:
                fil_b.writelines(i)

static/image/hrline/line4.png
原文件内容:
喂马劈柴,周游世界。
前程似锦

无论如何相信自己,没什么过不去的,加油。
没问题
修改后没有变化

可见打印出修改后的列表中”没”并没有被修改为“有”,这是为什么?真的想不通?
感谢各位的解答

Curry30huang 发表于 2020-8-8 09:12:40

更加恐怖的是我把小甲鱼的源码复制了,依然无法替换def file_replace(file_name, rep_word, new_word):
    f_read = open(file_name)

    content = []
    count = 0

    for eachline in f_read:
      if rep_word in eachline:
            count += eachline.count(rep_word) #count感觉应该用这个
            eachline = eachline.replace(rep_word, new_word)
      content.append(eachline)   

    decide = input('\n文件 %s 中共有%s个【%s】\n您确定要把所有的【%s】替换为【%s】吗?\n【YES/NO】:' \
                   % (file_name, count, rep_word, rep_word, new_word))

    if decide in ['YES', 'Yes', 'yes']:
      f_write = open(file_name, 'w')
      f_write.writelines(content)
      f_write.close()

    f_read.close()

代码源自https://fishc.com.cn/thread-45487-1-2.html
感觉是电脑问题或者软件问题了

Twilight6 发表于 2020-8-8 09:56:34

Curry30huang 发表于 2020-8-8 09:12
更加恐怖的是我把小甲鱼的源码复制了,依然无法替换

代码源自https://fishc.com.cn/thread-45487-1-2.ht ...


是不是你文件查看错了?甲鱼哥代码确实没问题都不行,你运行起来有报错嘛?

sunrise085 发表于 2020-8-8 09:58:06

本帖最后由 sunrise085 于 2020-8-8 09:59 编辑

我看了一下小甲鱼的这个程序是没问题的
你的程序之所有有问题是因为在第11行,replace之后并没有重新赋值给a,所以a没有变,这一点在第15行print的时候你应该能看到没有被修改啊
第11行修改为a=a.replace(index,change)就可以了
再者,第11行和第12行应该换一下位置。因为西药先统计,然后再替换,发展为统计出来的都是0了

Curry30huang 发表于 2020-8-9 07:17:50

Twilight6 发表于 2020-8-8 09:56
是不是你文件查看错了?甲鱼哥代码确实没问题都不行,你运行起来有报错嘛?

找到答案了,感谢回答

Curry30huang 发表于 2020-8-9 07:19:40

sunrise085 发表于 2020-8-8 09:58
我看了一下小甲鱼的这个程序是没问题的
你的程序之所有有问题是因为在第11行,replace之后并没有重新赋值 ...

真的十分感谢,忘记重新赋值了,误认为和列表后缀函数的操作一样,误认为没有返回值了。

大毛不困 发表于 2020-9-29 10:42:32

正好做作业遇到了相同问题,学习了~
页: [1]
查看完整版本: 是什么原因导致无法字符串替换的