Чтобы ответить на первую часть вашего вопроса, вы можете просто использовать функцию split
после прочтения текста и записать их в свои новые файлы:
with open('oldfile.txt', 'r') as fh:
text_split = fh.read().split(keyword)
with open('newfile' + extension1, 'w') as fh:
fh.write(text_split[0])
with open('newfile' + extension2, 'w') as fh:
# If you know that the keyword only appears once
# you can changes this to fh.write(text_split[1])
fh.write(keyword.join(text_split[1:]))
Вторая часть вашего вопроса оченьтруднее.Я не знаю, с каким форматом файлов вы работаете, но TXT-файлы - это просто текст без определенной структуры.XML-файлы не могут быть преобразованы из любого произвольного формата.Если вы работаете с файлами XML в формате .txt, вы можете просто изменить формат на XML, но если вы хотите преобразовать формат, такой как CSV, я предлагаю вам использовать библиотеку, например lxml .
Редактировать: если файл не помещается в память, вместо этого вы можете перебирать строки:
with open('oldfile.txt', 'r') as fh:
fh_new = open('newfile' + extension1, 'w')
keyword_found = False
line = fh.readline()
while line:
if not keyword_found:
text_split = line.split(keyword)
fh_new.write(text_split[0])
if len(text_split) > 1:
fh_new.close()
keyword_found = True
fh_new = open('newfile' + extension2, 'w')
fh_new.write(text_split[1:])
else:
fh_new.write(line)
line = fh.readline()
fh_new.close()