繁体   English   中英

查找以特定字符开头的行块

[英]Finding block of lines starting with a specific character

(我编辑了问题以进行澄清)

我将不胜感激有关如何在 python 中实现以下内容的建议:鉴于文本

> first
> second
third
fourth
> fifth
> sixth
> seventh

我想得到两个潜台词:

first
second

fifth
sixth
seventh

即给定一些文本行的输入, output 应该是以>开头的行块。 我在这里定义的“块”是一组以>开头的连续行。 在上面的示例中,由于第三行不是以>开头,因此它将上述两行“剪切”成一个块。 然后第二个块从以>开头的第一行开始,即第五行。

我决定使用蛮力方法来解决问题。 它并不优雅,但它有效(使用consecutive_groups的代码取自对这个问题的回答):

from more_itertools import consecutive_groups

def get_block_ids(s, sep='>'):
    idx = [i for i, line in enumerate(s) if line != '' and line[0] == sep]
    idx_grouped = [list(group) for group in consecutive_groups(idx)]
    idx_ranges = [(g[0], g[-1]) for g in idx_grouped]
    return idx_ranges

function get_block_ids返回一个元组列表,每个元组包含在字符串s中找到的相应块中第一行和最后一行的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM