专栏首页数据分析1480数据科学系列:数据处理(7)--字符串函数基于R(三)

数据科学系列:数据处理(7)--字符串函数基于R(三)

这一部分,将R语言stringr包中的使用正则表达式的字符串函数简单介绍一下,会用到正则表达式的相关内容,有关正则表达式的知识可以回顾R&Python Data Science系列:数据处理(6)--字符串函数基于R(二)

4.3 使用正则表达式的字符串函数

4.3.1 str_count()函数

str_count()函数用于检验字符串中出现特征的次数,返回一个数字向量。

str_count(string, pattern = "")

参数

pattern:匹配的字符

text <- c('Flash', 'Flaash', 'Flaaash', 'Flaaaasha')

检验字符串向量中"a"出现的

str_count(text, "a")

字符串"Flash"中有一个"a",所以返回数字向量1,"Flaaaasha"中有5个"a",所以返回数字向量5。

检验字符串向量text中以F开始,h结尾的字符个数:

str_count(text, "^F\\w*h$")

4.3.2 str_split()和str_split_fixed()函数

str_split()函数在匹配的位置拆分字符串,返回列表或者矩阵形式的字符串,默认情况下返回列表形式数据,当参数simplify = TRUE等价于str_split_fixed()函数;

str_split_fixed()函数在匹配的位置将字符串拆分固定的块数,返回矩阵形式的字符串;

str_split(string, pattern, n = Inf, simplify = FALSE)
str_split_fixed(string, pattern, n)

参数

pattern:匹配的字符

n : 拆分的个数

simplify:逻辑值,如果是FALSE,返回列表形式字符串向量,如果是TRUE,返回矩阵形式字符串。

text2 <- c("flashandFlashandFLASH",
"workingnotesAndWorkingnotesandWORKINGNOTESAndWorkingNotes")

使用分隔符and或者And拆分字符串,参数simplify = FALSE(默认为FALSE),并用class()函数查看返回数据类型:

str_split(text2, "(a|A)nd")
class(str_split(text2, "(a|A)nd"))

使用分隔符and或者And拆分字符串,参数simplify = TRUE,并用class()函数查看返回数据类型,使用dim()函数查看返回矩阵的结构:

str_split(text2, "(a|A)nd", simplify = TRUE)
class(str_split(text2, "(a|A)nd", simplify = TRUE))
dim(str_split(text2, "(a|A)nd", simplify = TRUE))

参数simplify = TRUE时候,返回矩阵形式数据,且长度不够的位置为空字符串。

使用参数n强制在匹配的位置拆分指定的几块:

str_split(text2, "(a|A)nd", simplify = TRUE, n = 3)

当指定参数n的个数的时候,从左到右拆分,即使第n个字符串中仍可以拆分,不做拆分。

str_split_fixed(text2, "(a|A)nd", n = 3)

4.3.3 str_substr()与str_which()函数

str_substr()函数返回符合匹配的字符串,返回结果是字符串;

str_which()函数返回符合匹配的字符串的位置,返回结果是数字向量,一般用在字符串向量中。

str_subset(string, pattern)
str_which(string, pattern)

参数

pattren:匹配的字符

匹配以a开始:

text3 <- c("flash", "aflash", "flasha"
str_subset(text3, "^a")
str_which(text3, "^a")

匹配以a结束:

str_subset(text3, "a$")
str_which(text3, "a$")

4.3.4 str_detect()函数

str_detect()函数,用于检验字符串中是否包含匹配的特征,返回结果为逻辑值TRUE和FALSE。

str_detect(string, pattern)

参数

pattern : 匹配的字符

检测字符串向量text3中字符串是否以a开头:

str_detect(text3, "^a")

4.3.5 str_match()与str_match_all()函数

str_match()函数从字符串中返回匹配的字符,没有匹配的字符返回NA,返回结果为矩阵形式。

str_match_all()函数从字符串中返回匹配的字符,没有匹配的字符返回NA,返回结果为列表形式。

str_match(string, pattern)
str_match_all(string, pattern)

参数

pattern:匹配的字符

text4 <- c("flash", "FLASH", "flash007")
str_match(text4, "a")
class(str_match(text4, "a"))
str_match_all(text4, "a")
class(str_match_all(text4, "a"))

4.3.6 str_replace()与str_replace_all()函数

str_replace()函数替换字符串中第一个匹配到的特征,返回字符向量;

str_replace_all()函数替换字符串中所有匹配到的特征,返回字符向量;

str_replace(string, pattern, replacement)
str_replace_all(string, pattern, replacement)

参数

pattern:匹配的字符

replacement:用于替换的字符

text5 <- c("flasha", "FLASHa", "flash007")

将字符串中的a或者A替换成F:

str_replace(text5, "[aA]", "F")
str_replace_all(text5, "[aA]", "F")

4.3.7 str_locate()与str_locate_all()函数

str_locate()函数用于返回第一个匹配到的特征的位置,返回结果为起始和结束为列名的矩阵

str_locate_all()函数返回所有匹配的特征位置,返回结果为列表

str_locate(string, pattern)
str_locate_all(string, pattern)

参数

pattern:匹配的字符

text5 <- c("flasha", "FLASHa", "flash007")
str_locate(text5, "a")
str_locate_all(text5, "a")

4.3.8 str_extract()与str_extract_all()函数

str_extract()函数用于提取匹配特征的第一个字符串,返回结果为字符向量;

str_extract_all()函数用于提取匹配特征的所有字符串,默认返回结果为字符向量的列表

str_extract(string, pattern)
str_extract_all(string, pattern, simplify = FALSE)

参数

pattren:匹配的字符

simplify:逻辑值,如果是FALSE,返回列表形式字符向量的列表,如果是TRUE,返回字符向量的矩阵。

text5 <- c("flasha", "FLASHa", "flash007")
str_extract(text5, "[a-zA-Z]+")
str_extract_all(text5, "[a-zA-Z]+")
str_extract_all(text5, "[a-zA-Z]+", simplify = TRUE)

4.3.9 小结

从非正则表达式字符串函数、R语言中的正则表达式以及使用正则表达式的字符串函数介绍了R语言中stringr包中的字符串函数。下面将介绍数据处理--字符串函数基于Python的部分。

本文分享自微信公众号 - 数据分析1480(lsxxx2011)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R&Python Data Science系列:数据处理(5)--字符串函数基于R(一)

    数据根据结构可以分为结构化数据、非结构化数据和半结构化数据,前面介绍的数据处理函数针对于结构化数据,而字符串通常包含非结构化或者半结构化数据,这一部分介绍一下...

    1480
  • Python绘图还在用Matplotlib?out了 !发现一款手绘可视化神器!

    今天,给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts。

    1480
  • 数据科学系列:数据处理(6)--字符串函数基于R(二)

    承接R&Python Data Science系列:数据处理(5)--字符串函数基于R(一),继续介绍R语言中的字符串函数。

    1480
  • Kotlin日常编程(一)——拒绝使用"!!"

    这个时候,编译会无法通过,系统会给你改成list.add(str!!)以通过编译。会出现这样的原因是Kotlin有着自己的判空机制。"str!!"表示str一定...

    饮水思源为名
  • python内置模块之string

    str.capitalize() 把字符串的第一个字符大写 str.center(width) 返回一个原字符串居中,并使用空格填充到width长度的...

    菲宇
  • StringUtils工具类常用方法

    前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅。 isEmpty(String str...

    JMCui
  • C#字符串截取

    yaphetsfang
  • LeetCode 709. 转换成小写字母

    实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。

    Michael阿明
  • 金额转大写

    在处理财务账款时,需要将转账金额写成大写的。也就是说,如果要转账123456.00元,则需要写成“壹拾贰万叁仟肆佰伍拾陆元整”。 所以常常需要通过程序控制自动进...

    崔笑颜
  • [剑指offer] 字符串的排列

    输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,c...

    尾尾部落

扫码关注云+社区

领取腾讯云代金券