пятница, 12 февраля 2010 г.

Обработка выдачи wordstat.yandex.ru при помощи небольшого скрипта на Ruby

На днях столкнулся с небольшой проблемой по обработке выдачи сервиса Wordstat от Yandex. То есть, при простом копировании ключевых фраз по Ctrl+C - Ctrl+V мы имеет файл такого вида:
====
Ключевая фраза1 23434
Ключевая +фраза2 5435
...
====
В данном случае, нам необходимо избавиться от заключительных числовых значений (количество запросов данной ключевой фразы в месяц), а также заодно убрать из строчных значений ключевых фраз символ "+". Если бы строк в выдаче было не очень много, можно было бы обойтись и ручным трудом, но, в любом случае, каждый понимает, что ручной труд - это плохо и негодно :) В общем, будем это дело автоматизировать. Попробуем написать небольшой скрипт на Ruby.

Итак, что нам нужно сделать. Во-первых, прочитать входной файл, затем обработать все его строки, выбросив из них всё лишнее, и на заключительном этапе записать полученный результат в файл вывода. Приступаем.
Чтение входного файла в строку:

s = ''
File.open('input.txt',"r") do |f|
    s = f.read
end


Преобразование строки s в массив arr (в качестве разделителей выступает комбинация символов "перевод строки" + "возврат каретки"):

arr = s.split("\n\r")

Собственно, обработка массива arr (удаление хвостовых числовых значений и символов '+'):

arr = arr.map do |el| 
    el.gsub!('+','')
    el.gsub!(/(\s|\t)+\d+$/,'')
end


Ну и финальная часть - запись обработанного массива arr в файл вывода:

File.open('output.txt',"w") do |f|
   f.write(arr.join("\n\r"))
end    


Предварительно сам массив "склеивается" через те же самые символы перевода строки и возврата каретки, которые мы убирали в самом начале.
Вот и всё. Как видите, ничего сложного здесь нет. Не исключено, конечно, что этот код не оптимален, но в качестве стартового учебного примера, мне кажется, вполне сгодится.

Комментариев нет:

Отправить комментарий