在Python中仅打印某些行之后的行
例如,我有一个有很多行的csv文件在Python中仅打印某些行之后的行,python,csv,web-scraping,Python,Csv,Web Scraping,例如,我有一个有很多行的csv文件 This is line 1 This is line 2 This is line 3 This is line 4 This is line 5 This is line 6 This is line 7 This is line 8 This is line 9 对于Python代码,我只需要打印某些行之后的行,更具体地说,我需要打印第3行之后的行和第7行之后的行,打印之后,需要将它们放在另一个csv中 我怎么做? 谢谢 如果您能够合理地预测行中可
This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
对于Python代码,我只需要打印某些行之后的行,更具体地说,我需要打印第3行之后的行和第7行之后的行,打印之后,需要将它们放在另一个csv中
我怎么做?
谢谢 如果您能够合理地预测行中可能包含的内容,那么使用regex将是我的首选解决方案
重新导入
re_pattern=re.compile(r“这是第[37]行”)
#上面用于精确匹配“这是一条线”,后跟3或7。
#引号前的r表示以下字符串应按字面解释。
输出到新的csv=[]
在第行后面打印=错误
对于csv_行中的行:
如果在下面的\u行中打印\u:
打印(行)
输出到新的csv.append(行)
在第行后面打印=错误
如果重复匹配(重复模式,线条):
打印以下行=真
#然后将输出写入新的CSV
代码最初会将“打印”行后的“打印”设置为False,因为您不知道是否要打印下一行。如果您的正则表达式字符串与当前行匹配,您的print\u follow\u line bool将设置为True。然后,它将打印下一行并将其添加到输出列表中,您可以稍后将其写入CSV
如果您是regex新手,此网站对调试和测试匹配项非常有帮助:您只需在文件中的行中循环,找到匹配项后返回即可。大概是这样的:
def find_line_after(target):
with open('lines.csv', 'r') as f:
line = f.readline().strip()
while line:
if line == target:
return f.readline().strip()
line = f.readline().strip()
可能重复的