Y特奈特 2023-11-21 14:00 采纳率: 91.9%
浏览 6
已结题

python文件操作环节

有个需求:将该文件bill.txt文件进行备份,但是标注为测试的数据不被记录

img

# 打开文件,得到文件对象,准备读取
fr = open("E:/python-learning/08_python中的文件处理/作业/bill.txt","r",encoding="UTF-8")

# 打开文件,得到文件对象,准备写入
fw = open("E:/python-learning/08_python中的文件处理/作业/bill.txt.bak","w",encoding="UTF-8")

# for循环读取文件
for line in fr:
    list = line.strip().split(",")
    # 判断内容,将满足的内容写出
    if list.index["测试"] != -1:
        # 进入下一次循环,这一次后面的内容就跳过了
        continue
    # 将内容写出去
   else:
      fw.write(line)
      # 由于之前对内容进行了strip操作,因此这需要我们手动写一个换行符
      fw.write("\n")

# 关闭两个文件对象,close内含了flush方法
fr.close()
fw.close()

但是程序报错了,首先我通过在循环内部输出了list和type(list)证实了,list即循环读取到的每一行数据都是str类型,然后通过strip去除空格,再根据,spilt分割得到list列表,那么不久可以通过index.["测试"]来获取index下标值吗?如果存在,它的下标值就应该是大于0的(默认都是从左开始),为何程序运行后,报了"测试" is not in list 的ValueError错误

  • 写回答

3条回答 默认 最新

  • Lemon2050 2023-11-21 17:34
    关注
    if list.index["测试"] != -1:
            # 进入下一次循环,这一次后面的内容就跳过了
            continue
    

    可以改成:

    if "测试" in list:
            # 进入下一次循环,这一次后面的内容就跳过了
            continue
    

    其实你都可以直接用"测试" in line来判断,无需split,不过split还是会精确一些。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 已采纳回答 11月22日
  • 创建了问题 11月21日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22