LINUX.ORG.RU

Кириллица в Ruby

 ,


0

3

Привет, лор!
Потребовалось сделать парсер сайта и импорт результатов в csv. При парсинге, вроде бы, все идет нормально, ищу через regexp-ы, результаты правильные.
Проблема в том, что функция возвращает найденные элементы в формате массива. Обращаясь к элементу массива и записывая его в файл, все получается нормально. Но если перевести в string, посредством «to_s», то на выходе в файл получается что-то вроде

[["\xCD\xEE\xE2\xEE\xF1\xE8\xE1\xE8\xF0\xF1\xEA"]]
Переводить в string обязательно, т.к. в csv нужно записывать в формате
'"'+name+'","'+price+'","'+description+'","'+category+'"'
Можно, конечно, сохранять в промежуточные файлы каждую переменную, но это ведь не есть гуд.
Спасибо.

Перемещено mono из talks



Последнее исправление: cetjs2 (всего исправлений: 2)

ищу через regexp-ы

Не давай троллям избыточные данные. Зря ты вот это сказал.
Сейчас набегут интеллектуалы и будут тебе 2 страницы рассказывать, что регулярками html парсят только депутаты, олигархи и лица к ним приравненные.

Stahl ★★☆
()
Ответ на: комментарий от Stahl

Собственно, чего еще можно ожидать создавая тему тему в talks? Технического совета?

Dantix ★★
()

очевидно проблема в кодировке) Проверь в какой кодировке данные полученые в массив, проверь в какой кодировке файл. Попробуй не to_s а Encoding заюзать.

RA
()
Ответ на: комментарий от Stahl

всё так. Смысол городить свои костыли, если html имеет свою четкую структуру и парсится проcто как пукнуть?

или боязнь того, что бесполезные знания о регулярных выражениях вылетят из головы из-за частого неиспользования?

n_play
()
Ответ на: комментарий от RA

Сильно не пинай, пожалуйста. Первый раз ruby пользуюсь.
Какой метод для определения типа переменной?
array[0].class возвращает только Array.

lizzzardet
() автор топика
Ответ на: комментарий от n_play

если html имеет свою четкую структуру

Как уеб-дизайнер наклал, такая и структура.

legolegs ★★★★★
()

Ты там CSV вручную пишешь что ли?

require 'csv'

CSV.open("path/to/file.csv", "wb") do |csv|
  csv << ["row", "of", "CSV", "data"]
  csv << ["another", "row"]
  # ...
end

'«'+name+'»,«'+price+'»,«'+description+'»,«'+category+'»'

PHP'шник?

"whatever#{name}foobar#{price}…"

Кодировка скрипта, надеюсь, тоже указана?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.