Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中仅打印某些行之后的行_Python_Csv_Web Scraping - Fatal编程技术网

在Python中仅打印某些行之后的行

在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中 我怎么做? 谢谢 如果您能够合理地预测行中可

例如,我有一个有很多行的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()
可能重复的