鱼C论坛

 找回密码
 立即注册
查看: 1423|回复: 2

[已解决]求助:谢谢

[复制链接]
发表于 2021-6-28 09:45:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-28 10:38:56 | 显示全部楼层
逃兵 发表于 2021-6-28 10:14
指针的问题

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

谢谢指点,到处老是查不到原因,因为以为是文件关闭的原因,写了close结果 还是空列表,结果 复制 上来又忘记了。 论坛大神多。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 06:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表