1

次のような行を含むファイルがあります。

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

文字 (空白ではない) で始まる行を、空白で始まる結果的な行とグループ化したいと思います。次の行が空白で始まらない行も省略したいと思います。上記の例を使用した望ましい出力は、次のようになります。

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

このファイルを Python で解析するにはどうすればよいですか?

4

1 に答える 1

6
>>> 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
于 2013-02-04T15:37:34.750 に答える