鱼C论坛

 找回密码
 立即注册
查看: 1434|回复: 9

[已解决]关于删除txt中指定行的提问

[复制链接]
发表于 2021-1-5 10:51:23 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
新手小白求助,请问如何删除txt中的指定行,并返回删除后的内容呢?
例如txt原文件内容为:
101,abc,apple
102,def,banana
103,ghi,pear

想要删去102对应的内容
删去之后文件内容为:
101,abc,apple
103,ghi,pear


请问代码应该怎么写,谢谢!!
最佳答案
2021-1-5 10:55:45
本帖最后由 jackz007 于 2021-1-5 10:58 编辑
  1. f = open('abc.txt')
  2. d = list(f)
  3. f . close()
  4. f = open('abc.txt' , 'w')
  5. for s in d:
  6.     if s[: 3] == '102':
  7.         print(s)
  8.     else:
  9.         f . write(s)
  10. f . close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-5 10:53:25 From FishC Mobile | 显示全部楼层
本帖最后由 hrp 于 2021-1-5 11:04 编辑

打开文件,读取所有内容转换成列表,删除列表指定项,将列表内容写入同名文件。
  1. with open('1.txt', encoding='utf-8') as f:
  2.     cl = list(f)

  3. with open('1.txt', 'w', encoding='utf-8') as f:
  4.     for s in cl:
  5.         if '102' in s:
  6.             continue
  7.         f.write(s)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 10:55:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-1-5 10:58 编辑
  1. f = open('abc.txt')
  2. d = list(f)
  3. f . close()
  4. f = open('abc.txt' , 'w')
  5. for s in d:
  6.     if s[: 3] == '102':
  7.         print(s)
  8.     else:
  9.         f . write(s)
  10. f . close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 10:57:38 | 显示全部楼层
逐行读取 t1.txt
判断是否为删除行
如果不是  就写入 t2.txt
移除 t1.txt
重命名 t2.txt 为 t1.txt

思路够不够清晰?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-8 14:11:49 | 显示全部楼层

请问  if s[:3]=='102' :  怎么理解? 为什么这里的切片是0-2?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-8 14:19:54 | 显示全部楼层
本帖最后由 jackz007 于 2021-1-8 14:21 编辑
AresFC 发表于 2021-1-8 14:11
请问  if s[:3]=='102' :  怎么理解? 为什么这里的切片是0-2?


       因为我就是要切字符串的头 3 个字符。换句话说,如果这个 '102' 出现在字符串的其它位置就不会命中该行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-8 14:30:38 | 显示全部楼层
jackz007 发表于 2021-1-8 14:19
因为我就是要切字符串的头 3 个字符。换句话说,如果这个 '102' 出现在字符串的其它位置就不会 ...

请问如果确定102只会在字符串第一位出现的话,用s[:1]是否也是一样的效果?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-8 14:34:43 | 显示全部楼层
hrp 发表于 2021-1-5 10:53
打开文件,读取所有内容转换成列表,删除列表指定项,将列表内容写入同名文件。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-8 14:36:59 | 显示全部楼层
本帖最后由 jackz007 于 2021-1-8 14:38 编辑
AresFC 发表于 2021-1-8 14:30
请问如果确定102只会在字符串第一位出现的话,用s[:1]是否也是一样的效果?


        s[:1] 只能切到字符串开头的第 1 个字符,如何能与 3 个字符的字符串 '102' 相等?必须要切出来 3 个字符才能比啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-8 14:43:20 | 显示全部楼层
jackz007 发表于 2021-1-8 14:36
s[:1] 只能切到字符串开头的第 1 个字符,如何能与 3 个字符的字符串 '102' 相等?必须要切出 ...

懂了!!谢谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 01:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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