R语言提取文字(字符串)中的内容--正则式(2)

科学研究中有时候咱们收集到的数据很乱,不能马上进行分析,如SEER数据,用过都知道,咱们需要对数据进行清洗,从数据中提取咱们需要的东西,才能进行分析,这时候有个有用的东西叫正则式,对于我们在字符串中提取数据非常实用,上一章《R语言提取文字(字符串)中的内容–正则式(1)》咱们已经初步介绍了一些正则式的常见函数,今天咱们进一步介绍正则式使用。
别害怕看不懂,你正在一点点向前迈进!这个东西需要慢慢积累!
在这里插入图片描述
我们先导入数据,假设咱们有一串很乱的数据,

readLines("E:/r/test/messages.txt")

在这里插入图片描述
而我们想需要对它进行整理,咱们需要找到其中关于水果的数据,方便利于统计,但是计算机可不认识什么是水果
正则表达式提供了一系列用于表示模式的符号。
上述模式可以被描述成^\w+:\s\d+$,
其中的元符号(meta-symbols)用来表示一类字符。下面是一些简单的介绍,具体看参考文献。
• ^:这个符号表示一行的开始。
• \w:这个符号表示一个字母或数字。
• \s:这个符号表示一个空格字符。
• \d:这个符号表示一个数字字符。
• $:这个符号表示一行的结束。

"\w+“意味着一个或更多个字母,”:"是我们希望在单词后面看到的符号,
"\d+"表示一个或更多个数字字符。这个模式表达了所有我们需要的情况,并且排除了所有不需要的情况。
我们先进行我们需要的匹配,继续使用上次咱们使用的grep函数来匹配字符串。我们可以看到水果中例如苹果(apple: 20)都是这种字母加冒号(:)再加数字来表示,但是字母的个数不确定,数字的个数不确定,因此我们可以告诉计算机,字母加冒号(:)再加数字就是水果。
我们先写一个规则匹配符。

matches <- grep("^\\w+:\\s\\d+$",bc)

在这里插入图片描述
上面这段代码我来解释一下,^表示这行开始,$表示这行结束,\w 中 \w表示开头的是字母,但是\需要再加一个\来转义,所以写成2个\,\w+表示它可以是一个或者多个字符。接着的冒号(:)表示我们在字母后面需要看到一个冒号。\s表示冒号后面接着一个空格,还要再加一个\进行转义,我们这里注意一下,空格也是要占位的,不处理空格很多时候会导致匹配失败 ,\d+和w+的意思差不多,表示1个或者多个数字,也是要再加一个\进行转义的,所以写成\d+。这段内容体会一下。
根据规则,计算机帮我们选出1,3,5,6是水果,咱们提取就可以了。

bc[matches]

在这里插入图片描述
这样就轻易把其中的水果的内容提取出来了。如果咱们使用stringr包,功能更加强大,它是以矩阵的形式提取数据,

library(stringr)
matches <- str_match(bc,"^(\\w+):\\s(\\d+)$")
matches

在这里插入图片描述
Stringr包的str_match函数规则与grep稍微不同,多个字符匹配的内容需要括号()包起来,而且它的功能更加强大,把每个组件都提取出来,我更加喜欢。

咱们再来看个例子,先导入数据

be<-readLines("E:/r/test/messages.txt")
be

在这里插入图片描述
数据连在一起,我们需要的是下面这样的数据,分类分条好的

在这里插入图片描述
这相当于数据清理了,当数据量大的时候是没办法手工做的。咱们先对数据其中一行进行分析,可以看到第一个是日期,带二个是时间,后面两个是字母,不过一个是逗号连接,一个是空格连接,还是很有规律的
2014-02-01,09:20:29,Ken,James,Hey, how are you?
继续使用刚才我们使用的str_ _match函数,
日期的提取可以使用

(\\d+-\\d+-\\d+)

时间的的提取可以用

(\\d+:\\d+:\\d+)

提取逗号连接的字符

(\\w+),(\\w+)

提取空格链接的字符,这里要说一下\s表示空格,但是要注意一下大写S和小写s是不同的。\s*表空格出现零次、一次或者更多次,(.+)中,点符号(.)可代替任意符号,(.+)在这里表示可以是任意内容,最后以$结尾

\\s*(.+)$

咱们把上面的内容串联起来

pattern <- "^(\\d+-\\d+-\\d+),(\\d+:\\d+:\\d+),(\\w+),(\\w+),\\s*(.+)$"
matches <- str_match(be,pattern)

在这里插入图片描述
可以看到内容都被单独提取出来了稍微整理一下就是咱们所需要的数据了

df <- data.frame(matches[, -1])
colnames(df) <- c("Date", "Time", "Sender", "Receiver", "Message")

在这里插入图片描述
正则式初看有些复杂,当你理解掌握后用处很大,这个需要慢慢的积累。

推荐几个好的教程,共同学习,见参考文献

参考文献

  1. https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md#4-零宽度断言前后预查
  2. http://www.regexlab.com/zh/regref.htm
  3. R语言编程指南
  4. R语言编程艺术
  5. R数据科学

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年05月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有列表L=[‘UK’,‘china’,‘lili’,“张三”],print(L[-2])的结果是?( ) A: UK B: ‘lili’,‘张三’ C: lili D: ‘UK’,‘china’,‘lili’ 答案:C 列表元素定位 第2题 …

最新宝塔反代openai官方API开发接口详细搭建教程,解决502 Bad Gateway问题

一、前言 宝塔反代openai官方API接口详细教程&#xff0c;实现国内使用ChatGPT502 Bad Gateway问题解决&#xff0c; 此方法最简单快捷&#xff0c;没有复杂步骤&#xff0c;不容易出错&#xff0c;即最简单&#xff0c;零代码、零部署的方法。 二、实现前提 一台海外服务器…

正版软件|Soundop 专业音频编辑器,实现无缝的音频制作工作流程

关于Soundop Soundop 音频编辑器 直观而专业的音频编辑软件&#xff0c;用于录制、编辑、混合和掌握音频内容。 Soundop 是一款适用于 Windows 的专业音频编辑器&#xff0c;可在具有高级功能的直观灵活的工作区中录制、编辑和掌握音频并混音轨道。音频文件编辑器支持波形和频谱…

在Python中使用sqlite3进行数据持久化操作

目录 引言 一、安装sqlite3模块 二、创建数据库连接 三、创建游标对象 四、执行SQL命令 五、提交更改 六、关闭连接 七、使用参数化查询 八、使用ORM进行数据操作 九、备份和恢复数据库 十、处理大量数据 十一、优化查询性能 十二、处理并发访问 十三、处理数据持…

【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; map和set 1. 前言2. map和set介绍3. pair结构介…

一起学docker系列之二深入理解Docker:基本概念、工作原理与架构

目录 前言1 Docker的基本概念2 Docker的基本组成3 docker工作原理4 docker架构5 Docker详细工作过程结语 前言 在当今的软件开发和部署中&#xff0c;Docker已经成为一种不可或缺的工具。它简化了应用程序的打包、交付和运行&#xff0c;同时提供了强大的隔离性和可移植性。本…

Java学习笔记(七)——面向对象编程(中级)

一、IDEA &#xff08;一&#xff09;常用的快捷键 &#xff08;二&#xff09;模版/自定义模版 二、包 &#xff08;一&#xff09;包的命名 &#xff08;二&#xff09;常用的包 &#xff08;三&#xff09;如何引入&#xff08;导入&#xff09;包 &#xff08;四&am…

「Verilog学习笔记」用优先编码器①实现键盘编码电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 用此编码器实现键盘的编码电路。 注意&#xff1a;编码器的输出是低电平有效&#xff0c;而键盘编码电路输出的是正常的8421BCD码&#xff0c;是高电平有效。因此将编…

ElasticSearch 安装(单机版本)

文章目录 ElasticSearch 安装&#xff08;单机版本&#xff09;环境配置下载安装包调整系统参数安装启动并验证 ElasticSearch 安装&#xff08;单机版本&#xff09; 此文档演示 ElasticSearch 的单机版本在 CentOS 7 环境下的安装方式以及相关的配置。 环境配置 Linux 主机一…

OpenAI暂停ChatGPT Plus新用户注册;迷宫与图神经网络

&#x1f989; AI新闻 &#x1f680; OpenAI暂停ChatGPT Plus新用户注册&#xff0c;考虑用户体验 摘要&#xff1a;OpenAI决定暂停ChatGPT Plus新用户注册&#xff0c;以应对开发日后使用量激增带来的压力&#xff0c;确保每个人都能享受良好的体验。根据调查机构Writerbudd…

下载huggingface预训练模型到本地并调用

写在前面 在大模型横行的时代&#xff0c;无法在服务器上连接外网的研究僧真的是太苦逼了&#xff0c;每次想尝试类似于CLIP&#xff0c;BLIP之类的大模型都会得到“requests.exceptions.ConnectionError: (MaxRetryError("HTTPSConnectionPool(host‘huggingface.co’, …

Datawhale智能汽车AI挑战赛

1.赛题解析 赛题地址&#xff1a;https://tianchi.aliyun.com/competition/entrance/532155 任务&#xff1a; 输入&#xff1a;元宇宙仿真平台生成的前视摄像头虚拟视频数据&#xff08;8-10秒左右&#xff09;&#xff1b;输出&#xff1a;对视频中的信息进行综合理解&…

【解决方案】危化品厂区安防系统EasyCVR+AI智能监控

危化品属于危险、易燃易爆、易中毒行类&#xff0c;一旦在生产运输过程中发生泄漏后果不堪想象&#xff0c;所以危化品的生产储存更需要严密、精细的监控&#xff0c;来保障危化品的安全。EasyCVRTSINGSEE青犀AI智能分析网关搭建的危化品智能监控方案就能很好的为危化品监管保驾…

基于STC12C5A60S2系列1T 8051单片机的数模芯片DAC0832实现数模转换应用

基于STC12C5A60S2系列1T 8051单片的数模芯片DAC0832实现数模转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍数模芯片DAC0832介绍通过按键调节数模芯片DAC0832…

WPF下实现拖动任意地方都可以拖动窗口

首先在xaml中添加事件 <Window PreviewMouseLeftButtonDown"Window_PreviewMouseLeftButtonDown"PreviewMouseMove"Window_PreviewMouseMove"PreviewMouseLeftButtonUp"Window_PreviewMouseLeftButtonUp"/>然后脚本输入 Point _pressedP…

【Spring进阶系列丨第二篇】Spring中的两大核心技术IoC(控制反转)与DI(依赖注入)

前言 我们都知道Spring 框架主要的优势是在 简化开发 和 框架整合 上&#xff0c;至于如何实现就是我们要学习Spring 框架的主要内容&#xff0c;今天我们就来一起学习Spring中的两大核心技术IoC&#xff08;控制反转&#xff09;与DI&#xff08;依赖注入&#xff09;。 文章目…

【数据结构】别跟我讲你不会冒泡排序

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

【6】Spring Boot 3 集成组件:knift4j+springdoc+swagger3

目录 【6】Spring Boot 3 集成组件&#xff1a;knift4jspringdocswagger3OpenApi规范SpringFox Swagger3SpringFox工具&#xff08;不推荐&#xff09; Springdoc&#xff08;推荐&#xff09;从SpringFox迁移引入依赖配置jAVA Config 配置扩展配置&#xff1a;spring securit…

NumLevels

NumLevels&#xff1a;输入参数&#xff0c;最大的金字塔层数。默认auto&#xff0c;范围【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, auto】。 AngleStart&#xff1a;输入参数&#xff0c;输入匹配时的起始角度。默认-0.39&#xff0c;建议值【 -3.14, -1.57, -0.79, -0.39, -0.20,…

CodeWhisperer 使用经验分享

今天给大家分享一下 Amazon CodeWhisperer 编程工具&#xff08;免费哦&#xff09;&#xff0c;使用这个软件后我的编码质量提升不少&#xff0c;给大家分享一下我的经验。希望大家支持哦。 Amazon CodeWhisperer 是亚⻢逊出品的一款基于机器学习的 AI 编程助手&#xff0c;可…