Разбор словарных статей с помощью регулярных выражений - PullRequest
0 голосов
/ 09 июня 2010

Я пытаюсь получить данные из WWWJDIC Джима Брина.Возвращенные необработанные данные содержат много информации, разделенной в нескольких различных форматах.

Данные, полученные в приведенном ниже примере, приведены здесь: http://www.csse.monash.edu.au/~jwb/cgi-bin/wwwjdic.cgi?1ZUJ%E5%85%88%E7%94%9F

先生 [せ ん せ い] / (n) (1) учитель / магистр / врач / (suf) (2) симена учителей и т. д. как почетные / (P) /

Стоит ли использовать регулярное выражение?

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

Ваша проблема может быть решена с помощью регулярного выражения.Это возможное решение итерирует по entries для получения массива хэшей:

dictionary = entries.map do |entry|
  entry.scan(/(.*) \[(.*)\] \/(.*)\//).map do |(headword, kana, definition)|
    { headword: headword, kana: kana, definition: definition }
  end
end

Это довольно просто: отсканируйте каждую запись на три раздела в стандартном формате и сопоставьте эти совпадения в хэши, извлекая переменныев массиве на новые имена.Если существует более простой или более ясный способ решения проблемы, чем этот, то вам следует использовать его, но в противном случае я рекомендую что-то подобное.

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

0 голосов
/ 09 июня 2010

Regex может работать здесь;кажется, что данные возвращаются в простом формате «headword [kana] / Definition /», где определение также может содержать косую черту.Вы должны знать, что некоторые записи будут пропускать «[kana]» (попробуйте поискать, например, ハ ン バ ー グ.

Кроме того, вы должны знать, что необработанный файл словаря, который использует WWWJDIC, ​​также доступен для скачивания здесь: http://www.csse.monash.edu.au/~jwb/edict.html. Возможно, вам лучше подойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...