关于删除txt中指定行的提问
新手小白求助,请问如何删除txt中的指定行,并返回删除后的内容呢?例如txt原文件内容为:
101,abc,apple
102,def,banana
103,ghi,pear
想要删去102对应的内容
删去之后文件内容为:
101,abc,apple
103,ghi,pear
请问代码应该怎么写,谢谢!! 本帖最后由 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: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() 逐行读取 t1.txt
判断是否为删除行
如果不是就写入 t2.txt
移除 t1.txt
重命名 t2.txt 为 t1.txt
思路够不够清晰? jackz007 发表于 2021-1-5 10:55
请问if s[:3]=='102' :怎么理解? 为什么这里的切片是0-2? 本帖最后由 jackz007 于 2021-1-8 14:21 编辑
AresFC 发表于 2021-1-8 14:11
请问if s[:3]=='102' :怎么理解? 为什么这里的切片是0-2?
因为我就是要切字符串的头 3 个字符。换句话说,如果这个 '102' 出现在字符串的其它位置就不会命中该行。 jackz007 发表于 2021-1-8 14:19
因为我就是要切字符串的头 3 个字符。换句话说,如果这个 '102' 出现在字符串的其它位置就不会 ...
请问如果确定102只会在字符串第一位出现的话,用s[:1]是否也是一样的效果? hrp 发表于 2021-1-5 10:53
打开文件,读取所有内容转换成列表,删除列表指定项,将列表内容写入同名文件。
棒 本帖最后由 jackz007 于 2021-1-8 14:38 编辑
AresFC 发表于 2021-1-8 14:30
请问如果确定102只会在字符串第一位出现的话,用s[:1]是否也是一样的效果?
s[:1] 只能切到字符串开头的第 1 个字符,如何能与 3 个字符的字符串 '102' 相等?必须要切出来 3 个字符才能比啊!!! jackz007 发表于 2021-1-8 14:36
s[:1] 只能切到字符串开头的第 1 个字符,如何能与 3 个字符的字符串 '102' 相等?必须要切出 ...
懂了!!谢谢!!!
页:
[1]