在 python 中分割多行字符串

Partitioning multiline string in python

我正在使用 python 脚本运行一个 unix 命令,我将它的输出(多行)存储在一个字符串变量中。 现在我必须使用该多行字符串将其分成三个部分来制作 3 个文件(由模式 End---End 分隔) .

这是我的输出变量包含的内容

Output = """Text for file_A
something related to file_A
End---End
Text for file_B
something related to file_B
End---End
Text for file_C
something related to file_C
End---End"""

现在我想要三个文件 file_A、file_B 和 file_C 用于此输出值:-

file_A

的内容
Text for file_A
something related to file_A

file_B

的内容
Text for file_B
something related to file_B

file_C

的内容
Text for file_C
something related to file_C

此外,如果 Output 的相应文件没有任何文本,那么我不希望创建该文件。

例如

Output = """End---End
Text for file_B
something related to file_B
End---End
Text for file_C
something related to file_C
End---End"""

现在我只想创建 file_B 和 file_C,因为 file_A

没有文本

file_B

的内容
Text for file_B
something related to file_B

file_C

的内容
Text for file_C
something related to file_C

如何在 python 中实现它?是否有任何模块可以使用一些分隔符对多行字符串进行分区?

谢谢:)

您可以使用split()方法:

>>> pprint(Output.split('End---End'))
['Text for file_A\nsomething related to file_A\n',
 '\nText for file_B\nsomething related to file_B\n',
 '\nText for file_C\nsomething related to file_C\n',
 '']

由于最后有一个'End---End',最后拆分returns'',所以可以指定拆分个数:

>>> pprint(Output.split('End---End',2))
['Text for file_A\nsomething related to file_A\n',
 '\nText for file_B\nsomething related to file_B\n',
 '\nText for file_C\nsomething related to file_C\nEnd---End']
Output = """Text for file_A
something related to file_A
End---End
Text for file_B
something related to file_B
End---End
Text for file_C
something related to file_C
End---End"""

ofiles = ('file_A', 'file_B', 'file_C')

def write_files(files, output):
    for f, contents in zip(files, output.split('End---End')):
        if contents:
            with open(f,'w') as fh:
                fh.write(contents)

write_files(ofiles, Output)