潺陵大地 发表于 2021-6-28 09:45:55

求助:谢谢

dakai = input("请输入文件名:")
file = open(dakai)
file_new = []

rp_old = input("请输入要替换的单词或是字符:")
rp_new = input("请输入新的单词或是字符:")

count = 1

for each in file :
    if rp_old in each:
      count += 1
print("文件:{0}中共有{1}个【{2}】".format(dakai,count,rp_old))
print("你确定要把所有的【{0}】替换为【{1}】吗?".format(rp_old,rp_new))
queding = (input("【YES/NO】:"))

if queding == "yes" :
    for each in file :
      if rp_old in each:
            each.replace(rp_old,rp_new)
            file_new.append(each)
            print(file_new)
      else :
            file_new.append(each)
            print(file_new)
###-----------以上代码 出来的 file_new 列表是个空的,老是查不到原因???

###-------------------------这样写可以加进列表file_new
dakai = input("请输入文件名:")
file = open(dakai)
file_new = []

rp_old = input("请输入要替换的单词或是字符:")
print(type(rp_old))
rp_new = input("请输入新的单词或是字符:")
print(type(rp_new))

for each in file :
    file_new.append(each)
    print(file_new)
      
谢谢~

逃兵 发表于 2021-6-28 10:14:44

本帖最后由 逃兵 于 2021-6-28 10:19 编辑

指针的问题

第一遍遍历txt文本之后,指针会到最下方

之后再进行遍历会从指针开始的地方进行(也就是文件的末尾)

我们需要在第一次遍历文件之后,将指针位置复原到首位 file.seek(0)

另外,each.replace(rp_old,rp_new)不会改变each自身,而会生成一个新的字符串,我们需要将它赋值给新的变量名

最后不要忘记关闭文件

另附保存文件的代码


dakai = input("请输入文件名:")
file = open(dakai)
file_new = []

rp_old = input("请输入要替换的单词或是字符:")
rp_new = input("请输入新的单词或是字符:")

count = 0

for each in file :
    if rp_old in each:
      count += 1
print("文件:{0}中共有{1}个【{2}】".format(dakai,count,rp_old))
print("你确定要把所有的【{0}】替换为【{1}】吗?".format(rp_old,rp_new))
queding = (input("【YES/NO】:"))

file.seek(0)   #将指针复原到首位

if queding == "yes" :
    for each in file :
      if rp_old in each:
            temp = each.replace(rp_old,rp_new)#将each.replace(rp_old,rp_new) 的返回值赋值给变量temp
            file_new.append(temp)
            print(file_new)
      else :
            file_new.append(each)
            print(file_new)
file.close()

#文件写入
file = open(dakai,'w')

for i in file_new:
    file.write(i)

file.close()

潺陵大地 发表于 2021-6-28 10:38:56

逃兵 发表于 2021-6-28 10:14
指针的问题

第一遍遍历txt文本之后,指针会到最下方


谢谢指点,到处老是查不到原因,因为以为是文件关闭的原因,写了close结果 还是空列表,结果 复制 上来又忘记了。{:5_109:} 论坛大神多。
页: [1]
查看完整版本: 求助:谢谢