python删除文本行_使用Python从文本文件中删除特定数量的行

这篇博客讨论了如何使用Python从文本文件中删除特定行。提供的代码示例展示了如何删除文件开头的前两行,并保留后续内容。还提到了如果需要删除大量行时,如前100行,需要显式指定所有行号的问题。解决方案是提供了一个新的代码片段,可以删除前63行,然后忽略其余部分。
摘要由CSDN通过智能技术生成

AAAAAAAAAAAAAAAAAAAAA #

BBBBBBBBBBBBBBBBBBBBB #

CCCCCCCCCCCCCCCCCCCCC #

DDDDDDDDDDDDDDDDDDDDD #

EEEEEEEEEEEEEEEEEEEEE #

FFFFFFFFFFFFFFFFFFFFF #

GGGGGGGGGGGGGGGGGGGGG #

HHHHHHHHHHHHHHHHHHHHH #

忽略“#

假设

一直如此。。。

在前两行之后,我想保留三行。。。

最终结果

最终结果应该是这样的:

CCCCCCCCCCCCCCCCCCCCC #

DDDDDDDDDDDDDDDDDDDDD #

EEEEEEEEEEEEEEEEEEEEE #

删除行:前2行+后3行(即第5行之后)的所有内容

要求的

def delete_multiple_lines(original_file, line_numbers):

"""In a file, delete the lines at line number in given list"""

is_skipped = False

counter = 0

# Create name of dummy / temporary file

dummy_file = original_file + '.bak'

# Open original file in read only mode and dummy file in write mode

with open(original_file, 'r') as read_obj, open(dummy_file, 'w') as write_obj:

# Line by line copy data from original file to dummy file

for line in read_obj:

# If current line number exist in list then skip copying that line

if counter not in line_numbers:

write_obj.write(line)

else:

is_skipped = True

counter += 1

# If any line is skipped then rename dummy file as original file

if is_skipped:

os.remove(original_file)

os.rename(dummy_file, original_file)

else:

os.remove(dummy_file)

delete_multiple_lines('sample.txt', [0,1,2])

此方法的问题可能是,如果文件顶部有1-100行要删除,则必须指定[0,1,2…100]。对吗?

回答

由@sandes提供

以下代码将:

删除前63个

忽略其余部分

with open("sample.txt", "r") as f:

lines = f.readlines()

new_lines = []

idx_lines_wanted = [x for x in range(63,((63*2)+95))]

# delete first 63, then get the next 95

for i, line in enumerate(lines):

if i > len(idx_lines_wanted) -1:

break

if i in idx_lines_wanted:

new_lines.append(line)

with open("sample2.txt", "w") as f:

for line in new_lines:

f.write(line)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值