如何删除以“ - ”开头的行加上3行之后

时间:2017-10-16 11:07:16

标签: python parsing

我的测试数据看起来像这样。它由1列.CSV组成

"----------"

PAGE1

PARAGRAPH

EXAMPLE

example1

example2

example3

example4

example5

"----------"

PAGE2

PARAGRAPH

EXAMPLE

example1

example2

example3

example4

example5

目的是删除包含

的4行
"------"

PAGE

PARAGRAPH

EXAMPLE

这样我就可以输出一个例子列表

import csv
input = open('Test_Parse.csv', 'rb')
output = open('first_edit.csv', 'wb')
writer = csv.writer(output)
for row in csv.reader ('Test_Parse.csv'):
if not row.startswith ("------"):
    writer.writerow(row)
input.close()
output.close()

这是尝试删除"------"但仍在挣扎的行?

非常感谢任何帮助或指向正确的方向!

3 个答案:

答案 0 :(得分:2)

fileobject视为迭代器:

import csv

with open('Test_Parse.csv', 'r') as inp, open('first_edit.csv', 'w', newline='') as out:
    writer = csv.writer(out)
    for l in inp:
        if l.startswith('"------'):
            next(inp)  # extract the next line from the file to skip
            next(inp)
            next(inp)
        else:
            writer.writerow((l.strip(),))

最终first_edit.csv内容:

example1
example2
example3
example4
example5
example1
example2
example3
example4
example5

答案 1 :(得分:0)

您可以使用线计数器的简单概念。

  • 开始时,将计数器初始化为0。
  • 您阅读的每一行:
    • 如果该行是“------”,请将计数器设置为零。
    • 将计数器增加1
    • 如果计数器为5或更多,请打印该行。

答案 2 :(得分:0)

只需将您的行转换为iter,然后调用跳过您不想要的行。参见:

import csv
input = open('Test_Parse.csv', 'rb')
output = open('first_edit.csv', 'wb')
writer = csv.writer(output)
rows = iter(csv.reader ('Test_Parse.csv'))
for row in rows:
    if row.startswith ("------"):
        next(rows)
        next(rows)
        next(rows)    
    else:
        writer.writerow(row)
input.close()
output.close()

如果我是你,我会在iter()和next()

上做一些阅读

参见例如:https://www.programiz.com/python-programming/iterator

请注意,使用with()的RomanPerekhrest回答也很有意义,因为您不需要在输入和输出上调用.close()。