|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def update(part,new_word):
new_line = part[0]
for each_part in part[1:]:
new_line += new_word
new_line += each_part
return new_line
file_name = input('请输入文件名:')
old_word = input('请输入需要替换的单词或字符:')
new_word = input('请输入新的单词或字符:')
f = open(file_name,'r')
list1 = []
number = 0
for each_line in f:
list1.append(each_line)
number += each_line.count(old_word)
print('文件%s中共有%d个【%s】'%(file_name,number,old_word))
f.close()
print('您确定要把所有的【%s】替换为【%s】吗?'%(old_word,new_word))
YN = input('【YES/NO】:')
if YN == 'YES' or YN == 'yes':
f = open(file_name,'w')
for each_line in list1:
if old_word in each_line:
new_line = update(each_line.split(old_word),new_word = new_word)
line_index = list1.index(each_line)
list1.remove(each_line)
list1.insert(line_index,new_line)
f.writelines(list1)
f.close()
这是标准答案,
for each_line in list1:
if old_word in each_line:
new_line = update(each_line.split(old_word),new_word = new_word)
line_index = list1.index(each_line)
list1.remove(each_line)
list1.insert(line_index,new_line)
这个地方,如果文件中有两行相同的内容,在执行 list1.remove(each_line)这一步的时候不会全部删除吗? 全部删除的话不会影响结果么?
本帖最后由 Twilight6 于 2020-6-7 00:16 编辑
在执行 list1.remove(each_line)这一步的时候不会全部删除吗? 全部删除的话不会影响结果么?
不会全部删除 只删除了遍历到的那一段,然后list1.insert(line_index,new_line) 又将字符串替换好的加入了列表中去
就相当于达到了替换的效果,实际上是先删除列表中对应位置的字符串,然后再在之前删去元素的位置重新插入被替换部分字符的字符串
|
|