2014-01-09 6 views
0

Мне нужно разбить строку строки в разные столбцы на excel. Вот те, которые я получаю.Как разбить строку на известные слова

Входной:

  • 37006 II Семестр жилец Диплом по клиническим исследованиям и проверке клинических данных, июль/август 2012 года. Регулярные мероприятия по вопросам фармации Время: 3 часа Макс. Метки: 100

Выходные: CSV запись со структурой (код, Сем/год, тема, курс, экзамен дата, время, Marks)

  • 37006, II семестр, жилец Диплом по клиническим исследованиям и управлению клиническими данными, Фармакологическое регулирование, июль/август 2012 года, 3 часа, 100

У меня есть данные в разных наборах, которые строят выше строк. Например:

Грамматика (это массив/словарь):

  • семестры [I, II, III, IV, V, VI, VII, VIII, IX, X, 1,2 , 3,4,5,6,7,8,9,10]
  • Годы [I, II, III, IV, V, VI, VII, VIII, IX, X, 1,2,3,4, 5,6,7,8,9,10]
  • Предметы [PG Диплом в области клинических исследований и управления клиническими данными, LL.B]
  • Курсы [Фармакологическое право, юриспруденция]
  • ExamDates [Июль/Август 2012, Январь/ФБ. 2013]
  • Время [3 часа]
  • MaxMarks [30,40,50,60,70,80,90,100]

FYI,

  • Я не уверен, что может использовать любые разделители, чтобы разбить его как очень непредсказуемый или надежный.
  • Я не уверен, что текст будет находиться в таком же порядке, в каждой строке или нет фиксированной длины или автомобили или слова

Моего предположения, прочитать слово в слове и пытаться соответствовать любому слову в любом массиве что у меня есть. Если его совпадение с любым словом, затем классифицируйте это слово в категорию падения и добавьте в соответствующую колонку в excel.

Здесь я знаю, как обрабатывать данные и все, кроме того, что оптимизировано/наилучшим образом для понимать каждое слово подпадает под категорию.

Есть ли какой-либо эксперт по лексическому анализу, который может поделиться некоторыми мыслями по этому поводу?

ответ

0

Вы должны использовать регулярные выражения для соответствия сложному текстуру.

+0

здесь данные не одно или 10 строк. его около 2000 строк и грамматика слишком велики, что создает все 200 строк. как я могу использовать регулярное выражение для этого огромного соответствия данных. –

+0

Вы можете попробовать применить одно регулярное выражение (содержащее 7 лексем, которые вы выделили) для каждой строки. – Xardas

+0

'^/d + \ s ((/ d {1,2} | X | IX | VIII | VII | VI | V | IV | III | II | II) \ sSemester) \ s ... $' является примером для первый лексем: семестр. – Xardas

0

Пожалуйста, взгляните на лексический анализатор, например ANTLR.Если вы знаете Java или другие языки, которые читают регулярные выражения, вы сможете с легкостью проанализировать их после обеда (или недели) пыток. Вы также можете написать regexp в Java, но я бы подтолкнул вас к интерфейсу ANTLR, который вы можете использовать в Eclipse. Он покажет вам, как строки анализируются.

Получите выходные данные ANTLR или Java, выпишите CSV-файл. CSV станет вашим транспортным средством для получения ваших данных в электронной таблице Excel.