"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"|
'-----------------------------+---------+----------------------'
1条答案
按热度按时间hwazgwia1#
文件很难解析,因为分隔符(空格)也存在于数据中。如果可能的话,最好从源头上解决。但由于这并不总是可行的,下面是我能想到的:
其思想是在文本中的每个日期前插入一个换行符(或数据中尚未出现的任何其他字符)(因为这是最独特的模式)。接下来,在
tNormalize
,这样每行上都有一个字符串,其中包含日期、用户名和tweet。我为匹配日期而编写的又快又脏的正则表达式是:
并替换为符合日期的回车:
\n$1
接下来,tExtractRegexFields
使用另一个正则表达式在其各自的列中提取日期、用户名和tweet。下面是我使用的正则表达式:共有3个捕获组,一个用于日期,一个用于用户名,最后一个捕获之后的所有文本,即tweet。
在我的示例中,我使用了以下文本:
我得到了: