按线型分组

2024-06-28 11:13:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件,里面有这样的行:

saldkfjaslk
    asdlkfja
    alsdkfjlk
aslkda;kdfsdlkfaj
sladkfjalskdfjlaskd
    sldkfaj
    lsadkfj
qwewrewst
se0polkjlkj
lpoerlwoej
    alskdjf
    asldkfjljlkjlk
sadlkfa

我想把以字符(不是空格)开头的行和以空格开头的消耗行组合在一起。我还想省略下一行不以空格开头的行。使用上述示例所需的输出如下所示:

[('saldkfjaslk', 'asdlkfja', 'alsdkfjlk'),
 ('sladkfjalskdfjlaskd', 'sldkfaj', 'lsadkfj'),
 ('lpoerlwoej', 'alskdjf', 'asldkfjljlkjlk')]

如何用Python解析这个文件?你知道吗


Tags: 文件空格alsdkfjlksldkfajaslkdaalskdjfsladkfjalskdfjlaskdkdfsdlkfaj
1条回答
网友
1楼 · 发布于 2024-06-28 11:13:29
>>> regex = re.compile(r"^\S.*(?:\n\s.*)+", re.MULTILINE)
>>> [tuple(match.split()) for match in regex.findall(s)]
[('saldkfjaslk', 'asdlkfja', 'alsdkfjlk'), 
 ('sladkfjalskdfjlaskd', 'sldkfaj', 'lsadkfj'), 
 ('lpoerlwoej', 'alskdjf', 'asldkfjljlkjlk')]

说明:

^    # Start of line
\S   # Match a non-whitespace character
.*   # Match the rest of the line
(?:  # Match...
 \n  #  a newline character
 \s  #  a whitespace character
 .*  #  and the rest of the line
)+   # once or more

相关问题 更多 >