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