Excel / XLS - фильтровать данные (с помощью регулярных выражений) и преобразовывать их в новые ячейки (возможно с openrefine?) - PullRequest
0 голосов
/ 22 октября 2018

Я застрял с проблемой.Я не эксперт по Excel.

Я нашел несколько тем, как использовать регулярные выражения в Excel, например:

Но я не знаю, как отфильтровать несколько вещей из источника данных во вновь созданный столбец.

Пример:

Источником данных в основном является HTML-исходный код в одной ячейке.

Я создал RegEx для сопоставления ссылок (ahref), YouTube, видеороликов Facebook, ссылок на infogr.am и прочего.

Я хочу:

Извлечь / отфильтровать ссылки из html в новый столбец, например:

Новый столбец "Ссылки"

 <a href="url">link text</a> \n
 <a href="url">link text</a> \n

(каждая отфильтрованная ссылкановая строка в ячейке)

Необязательно: вставьте рядом с ней еще один столбец, в котором подсчитываются абзацы / ссылки (считая строки).

Затем ссылки на видео (одна строка на отфильтрованные данныеснова) + необязательный счетный столбец.

И т. д.

Я нашел Openrefine.Который кажется очень хорошим и профессиональным.Но я не нашел там, как это сделать.

Мне не нужно работать с Excel, позже результаты могут быть преобразованы в * .csv - это будут данные для базы данных.

Хотя я думаю, что Excel хорош для первых шагов, как дополнительный пункт подсчета абзацев.

1 Ответ

0 голосов
/ 26 октября 2018

Чтобы создать новый столбец из HTML с каждой ссылкой в ​​одной ячейке, разделенной новой строкой:

forEach(value.parseHtml().select('a'), e, e).join('\n')

Вы должны увидеть что-то вроде этого:

enter image description here

Или, если вам нужен только текст ссылок:

forEach(value.parseHtml().select('a'), e, e.htmlText()).join('\n')

Или, если вы хотите только URL:

forEach(value.parseHtml().select('a'), e, e.htmlAttr('href')).join('\n')

Создатьновый столбец из HTML, который подсчитывает количество ссылок:

forEach(value.parseHtml().select('a'), e, e).length()

В вашем образце нет изображения или видео, поэтому я не могу показать вам, как их найти.Чтобы извлечь ссылки на infogr.am:

forEach(value.parseHtml().select('iframe[src*=infogr.am]'), e, e.htmlAttr('src')).join('\n')

OpenRefine использует селекторы JSoup , которые очень похожи на селекторы CSS.Просто используйте правый селектор внутри функции .select().

...