|
发表于 2022-2-12 17:18:41
|
显示全部楼层
本帖最后由 isdkz 于 2022-2-12 17:39 编辑
3楼提到的问题我没注意到,确实replace只是对字符串操作,并不会影响到原来的文件,
而且replace是返回一个被替换后的字符串,并不是原地操作,所以你可以把replace返回的结果存到一个列表中,后面需要写入文件的时候再用文件对象的writelines方法写入列表里面的字符串
还有一个问题就是你那里不应该用count+=1来统计字符数,因为一行不一定只存在一个需要被替换的字符,你可以用字符串的count方法来统计
确认操作那里的对yes或no的判断有可能大小写混用,对每一种情况都枚举比较麻烦,你可以用字符串的lower方法将它统一变成小写再判断变成小写后是不是'yes'
最后写入文件的时候要用 f.seek(0) 把指针移回文件开头再写入才能将原来的内容替换掉,否则就是在后面追加了
还有一个小小的建议就是命名规范,函数名和变量名都不要以大写字母开头
- def Funreplace(file, s, t):
- f = open(file, 'r+', encoding='utf-8')
- count = 0
- result = []
- for each in f:
- if s in each:
- count += each.count(s) # 注意这里
- result.append(each.replace(s, t)) # 注意这里
- print('文件%s 中共有%d个 【%s】' % (file, count, s))
- print("你确定要把所有的【%s】替换为【%s】吗?" % (s, t))
- G = input("【YES/NO】:")
- if G.lower() == 'yes': # 注意这里
- f.seek(0) # 注意这里
- f.writelines(result) # 注意这里
- f.close()
- file_name = input("请输入文件名:")
- s = input("请输入替换的单词或字符:")
- t = input("请输入新的单词或字符:")
- Funreplace(file_name, s, t)
复制代码 |
评分
-
参与人数 1 | 荣誉 +1 |
鱼币 +4 |
贡献 +1 |
收起
理由
|
不弃_
| + 1 |
+ 4 |
+ 1 |
鱼C有你更精彩^_^ |
查看全部评分
|