是什么原因导致无法字符串替换的
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
原文件内容:
喂马劈柴,周游世界。
前程似锦
无论如何相信自己,没什么过不去的,加油。
没问题
修改后没有变化
可见打印出修改后的列表中”没”并没有被修改为“有”,这是为什么?真的想不通?
感谢各位的解答
更加恐怖的是我把小甲鱼的源码复制了,依然无法替换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
感觉是电脑问题或者软件问题了
Curry30huang 发表于 2020-8-8 09:12
更加恐怖的是我把小甲鱼的源码复制了,依然无法替换
代码源自https://fishc.com.cn/thread-45487-1-2.ht ...
是不是你文件查看错了?甲鱼哥代码确实没问题都不行,你运行起来有报错嘛? 本帖最后由 sunrise085 于 2020-8-8 09:59 编辑
我看了一下小甲鱼的这个程序是没问题的
你的程序之所有有问题是因为在第11行,replace之后并没有重新赋值给a,所以a没有变,这一点在第15行print的时候你应该能看到没有被修改啊
第11行修改为a=a.replace(index,change)就可以了
再者,第11行和第12行应该换一下位置。因为西药先统计,然后再替换,发展为统计出来的都是0了 Twilight6 发表于 2020-8-8 09:56
是不是你文件查看错了?甲鱼哥代码确实没问题都不行,你运行起来有报错嘛?
找到答案了,感谢回答 sunrise085 发表于 2020-8-8 09:58
我看了一下小甲鱼的这个程序是没问题的
你的程序之所有有问题是因为在第11行,replace之后并没有重新赋值 ...
真的十分感谢,忘记重新赋值了,误认为和列表后缀函数的操作一样,误认为没有返回值了。 正好做作业遇到了相同问题,学习了~
页:
[1]