2015-01-06 6 views
1

Я запускаю команду unix, используя скрипт python, я сохраняю его вывод (многострочный) в строковой переменной. Теперь я должен сделать 3 файла, используя эту многострочную строку, разделив ее на три части (Обозначается шаблоном Конец --- Конец).Разметка многострочной строки в python

Это то, что моя Выходная переменная содержит

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

Вы можете использовать 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'] 
+0

upvoted ответ, как это кажется, вопрос это домашнее задание вопрос так будет стесняйтесь делать больше, чем намек. – PythonTester

+0

спасибо! Дух !! Я действительно должен прекратить приходить на этот форум: D Это оправдывает мое имя 8-) –

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)