AresFC 发表于 2021-1-5 10:51:23

关于删除txt中指定行的提问

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

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


请问代码应该怎么写,谢谢!!

hrp 发表于 2021-1-5 10:53:25

本帖最后由 hrp 于 2021-1-5 11:04 编辑

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

with open('1.txt', 'w', encoding='utf-8') as f:
    for s in cl:
      if '102' in s:
            continue
      f.write(s)

jackz007 发表于 2021-1-5 10:55:45

本帖最后由 jackz007 于 2021-1-5 10:58 编辑

f = open('abc.txt')
d = list(f)
f . close()
f = open('abc.txt' , 'w')
for s in d:
    if s[: 3] == '102':
      print(s)
    else:
      f . write(s)
f . close()

qq1151985918 发表于 2021-1-5 10:57:38

逐行读取 t1.txt
判断是否为删除行
如果不是就写入 t2.txt
移除 t1.txt
重命名 t2.txt 为 t1.txt

思路够不够清晰?

AresFC 发表于 2021-1-8 14:11:49

jackz007 发表于 2021-1-5 10:55


请问if s[:3]=='102' :怎么理解? 为什么这里的切片是0-2?

jackz007 发表于 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' 出现在字符串的其它位置就不会命中该行。

AresFC 发表于 2021-1-8 14:30:38

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

请问如果确定102只会在字符串第一位出现的话,用s[:1]是否也是一样的效果?

rsj0315 发表于 2021-1-8 14:34:43

hrp 发表于 2021-1-5 10:53
打开文件,读取所有内容转换成列表,删除列表指定项,将列表内容写入同名文件。

jackz007 发表于 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 个字符才能比啊!!!

AresFC 发表于 2021-1-8 14:43:20

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

懂了!!谢谢!!!
页: [1]
查看完整版本: 关于删除txt中指定行的提问