python - 按线型对线进行分组

标签 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 解析这个文件?

最佳答案

>>> 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

关于python - 按线型对线进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14689974/

相关文章:

python - 计算值是否存在于 pandas 数据框中列表的列中

python - 树莓派相机写入权限

python - 操作系统错误: [Errno 26] Text file busy on vagrant with synced_folder

python - Paramiko 上传文件成功但为空

python - 从字符串的开头和结尾删除非字母字符

python - 对象声明在 python 类中意味着什么,我应该使用它吗?

Python:如何在python、MAC OS中点击屏幕的特定位置

Python在字符串中的特定点重新匹配

带有参数和访问类实例的 Python 装饰器

python - 如何将数据帧的值复制到另一个数据帧的最后一列/行