/ / Преобразуване на текстов файл в Excel, използвайки Talend - excel, хаоп, текст, кошер, talend

Преобразуване на текстов файл в Excel с помощта на Talend - excel, хаоп, текст, кошер, talend

Работя понастоящем по проект, който да се заредиразпечатване в кошницата. Но поради неструктурирания формат на текстовия файл, трябваше първо да го обработя в структуриран файл, в този случай да го преобразувам в csv, което го прави разделен със запетаи.

Успях да разделям колоните както следва. въведете описанието на изображението тук

И това е моето Talend Job. въведете описанието на изображението тук

Това е текстовият файл, с който работя. въведете описанието на изображението тук

Опитвам се да направя маркираната част като една колона. Поради конфигурирането на разделянето чрез пространство във файловия вход, тя раздели tweets. Има ли някакъв начин да се реши това?

Отговори:

0 за отговор № 1

Вашият файл е много трудно да се анализира, тъй като вашиятразделител (интервал) също присъства във вашите данни. Ако е възможно, най-добре е да го оправите при източника. Но тъй като това не винаги е осъществимо, ето какво мога да измисля:

въведете описанието на изображението тук

Идеята е да въведете нов ред (или нещо друго)друг (и) символ (и), които вече не присъстват във вашите данни) пред всяка дата във вашия текст (тъй като това е най-уникалният модел). След това го нормализирайте, като използвате новия символ (или този, който сте използвали при замяната) в a tNormalize, така че да имате на всеки ред низ, съдържащ дата, потребителско име и писмено съобщение.

Бързият и мръсен регекс, който събрах, за да съответства на датата, е:

(\w{3}\s\w{3}\s\d{2}\s\d{2}:\d{2}:\d{2}\s\w{3}\s\d{4})

И заменете с връщане на карета, последвано от съответната дата: n$1

Следващия, tExtractRegexFields използва друг регекс, за да извлече датата, потребителското име и тийта в колонката. Тук е регексът, който използвах:

(\w{3}\s\w{3}\s\d{2}\s\d{2}:\d{2}:\d{2}\s\w{3}\s\d{4}\s)\(([^\)]+)\)\s(.+)

Има 3 групи за заснемане, една за датата, една за потребителското име и последната заснема целия текст след това, което е пишенето.

В моя пример използвах този текст:

"Fri Mar 15 23:58:55 CET 2013 (iMezouar) this is the 1st tweetFri Mar 15 23:58:55 CET 2013 (username2) this is the 2nd tweetFri Mar 15 23:58:55 CET 2013 (username3) this is the 3rd tweet"

И имам:

.-----------------------------+---------+----------------------.
|                          tLogRow_2                           |
|=----------------------------+---------+---------------------=|
|date                         |username |tweet                 |
|=----------------------------+---------+---------------------=|
|Fri Mar 15 23:58:55 CET 2013 |iMezouar |this is the 1st tweet |
|Fri Mar 15 23:58:55 CET 2013 |username2|this is the 2nd tweet |
|Fri Mar 15 23:58:55 CET 2013 |username3|this is the 3rd tweet"|
"-----------------------------+---------+----------------------"