在python中对多行字符串进行分区

时间:2015-01-06 14:21:51

标签: python file multilinestring

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

这是我的Output变量包含的内容

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

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

E.g

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中实现这一点?是否有任何模块使用某些分隔符对多行字符串进行分区?

谢谢:)

2 个答案:

答案 0 :(得分:2)

您可以使用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',最后一次拆分会返回'',因此您可以指定拆分次数:

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

答案 1 :(得分:0)

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)