Я думаю, причина того, что ваш скрипт такой медленный, в том, что вы открываете новый дескриптор файла для каждой строки. Если вы посмотрите на скрипт ruby вашего гуру, он закроет и откроет выходной файл, только если ваш разделитель совпадает.
В отличие от этого, ваш скрипт на python открывает новый дескриптор файла для каждой прочитанной строки (и, кстати, не закрывает их). Открытие файла требует обращения к ядру, так что это относительно медленно.
Еще одно изменение, которое я бы предложил, это изменить
fh = open(file, "r") ## open the file for reading
mylines = fh.readlines() ### read in lines
for line in mylines: ## for each line
до
fh = open(file, "r")
for line in fh:
С этим изменением вы не читаете весь файл в память, а только блок за блоком. Хотя это не имеет значения для файла размером 25 МБ, это повредит вам большими файлами и является хорошей практикой (и меньшим количеством кода;)).