Engee 文档
Notebook

查找和替换文本

处理文本数据通常涉及查找和替换子串。有几个函数可以查找文本并返回不同的信息:一些函数确认文本是否存在,另一些函数则计算文本片段的重复次数、查找索引或提取子串。


文本搜索

要确定一段文本是否存在,可以使用函数occursin() 。逻辑值 1 代表 true,0 代表 false。

In [ ]:
txt = "she sells seashells by the seashore"
TF = occursin("sea", txt)
Out[0]:
true

要计算这段文字出现的次数,可以使用函数count()

In [ ]:
n = count("sea", txt)
Out[0]:
2

要确定文本的位置,可使用函数findall() ,该函数返回与文本片段 "sea " 匹配的字符索引。

In [ ]:
idx = findall("sea", txt)
Out[0]:
2-element Vector{UnitRange{Int64}}:
 11:13
 28:30

在字符串数组中搜索文本

搜索和替换功能还可以查找多元素数组中的文本。例如,查找多首歌曲标题中的颜色名称。

In [ ]:
songs = ["Penny Lane", "Yellow Submarine","Blackbird"]
colors = ["Red", "Yellow", "Black"]

TF = occursin.(colors,songs)
Out[0]:
3-element BitVector:
 0
 1
 1

要显示包含颜色名称的歌曲列表,可使用 TF 逻辑数组作为原始歌曲数组的索引。这种方法称为逻辑索引

In [ ]:
songs[TF]
Out[0]:
2-element Vector{String}:
 "Yellow Submarine"
 "Blackbird"

匹配模式

除了搜索 "海 "或 "黄 "等字面文本外,您还可以搜索与模式匹配的文本。有许多预定义的模式,例如搜索数字序列的数字模式。

In [ ]:
address = " Sesame Street, New York, NY 10128"
nums = match(r"\d+", address)
Out[0]:
RegexMatch("10128")

您可以组合模式,使搜索更准确。例如,搜索以字母 "S "开头的单词。使用 string 指定 "S "字符,使用 lettersPattern 查找该字符后的其他字母。

In [ ]:
lettersPattern = r"[a-zA-Z]+"
pat = "N" * lettersPattern
StartWithS = match.(pat, address).match
Out[0]:
"New"

在 Engee 中处理文本的其他功能请参阅 文本字符串