如何在R语言中从杂乱文本字符串提取日期和时间段?
在R中提取杂乱文本里的日期和时间段
嗨,这个文本提取的需求我帮你搞定!针对你给出的杂乱文本,我们可以用正则表达式配合stringr包轻松提取目标内容,具体步骤如下:
1. 准备工作:安装并加载工具包
stringr是R里处理字符串非常便捷的工具包,先安装(第一次使用时)并加载它:
install.packages("stringr") # 仅需安装一次 library(stringr)
2. 定义你的杂乱文本变量
把你提到的杂乱内容存成一个R变量:
messy_text <- "Seuat eselyt ti 30.07.2019 klo 12:00 - 14:30 Tau ski 2342342 2342342 "
3. 提取日期
你的日期格式是dd.mm.yyyy,对应的正则表达式可以精准匹配这种格式:
extracted_date <- str_extract(messy_text, "\\d{2}\\.\\d{2}\\.\\d{4}") print(extracted_date) # 输出结果:"30.07.2019"
正则解释:\\d{2}匹配两位数字,\\.匹配实际的点(因为正则里的点默认匹配任意字符,所以要转义),\\d{4}匹配四位年份数字。
4. 提取时间段
时间段格式是hh:mm - hh:mm,同样用正则匹配:
extracted_time_range <- str_extract(messy_text, "\\d{2}:\\d{2} - \\d{2}:\\d{2}") print(extracted_time_range) # 输出结果:"12:00 - 14:30"
5. 一次性提取并整理成数据框(可选)
如果想把日期和时间段一次性提取并整理成结构化的数据框,可以用str_match:
# 正则里用括号标记两个要提取的分组 match_results <- str_match(messy_text, "(\\d{2}\\.\\d{2}\\.\\d{4}).*(\\d{2}:\\d{2} - \\d{2}:\\d{2})") # 转成数据框 result_df <- data.frame( 日期 = match_results[2], 时间段 = match_results[3], stringsAsFactors = FALSE ) print(result_df) # 输出: # 日期 时间段 # 1 30.07.2019 12:00 - 14:30
如果你的文本里日期/时间段格式有小变动(比如偶尔出现一位的日/月),可以把正则里的\\d{2}改成\\d{1,2},这样就能匹配1-2位的数字啦。
内容的提问来源于stack exchange,提问作者adrrs
相关产品推荐
相关产品推荐

