[英]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.