我的测试数据看起来像这样。它由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()
这是尝试删除"------"
但仍在挣扎的行?
非常感谢任何帮助或指向正确的方向!
答案 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)
您可以使用线计数器的简单概念。
答案 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()。