深入解析:【Wolfram语言】11 字符串和文本

11 字符串和文本

词汇表

表达式说明
"string"一个字符串
StringLength["string"]字符串长度
StringReverse["string"]反转字符串
StringTake["string",4]取字符串开头的字符
StringJoin["string","string"]连接字符串
StringJoin[{"string","string"}]连接字符串列表
ToUpperCase["string"]转大写
Characters["string"]将字符串转为字符列表
TextWords["string"]从字符串提取单词列表
TextSentences["string"]将字符串分割为句子
WikipediaData["topic"]获取某主题的维基百科条目
WordCloud["text"]基于词频生成词云
WordList[]常用英语单词列表
Alphabet[]字母表列表
LetterNumber["c"]字母在字母表中的位置
FromLetterNumber[n]返回字母表中对应位置的字母
Transliterate["text"]把任意语言的文本转写为英文字母
Transliterate["text","alphabet"]将文本转写为其它字母表
RomanNumeral[n]将数字转换为其罗马数字字符串
IntegerName[n]将数字转换为英文名称字符串
InputForm["string"]以输入形式显示字符串(含引号)
Rasterize["string"]生成位图

Wolfram 语言可以处理文本。

字符串

文本以字符串形式输入,用双引号 (" ") 表示。

输入一个字符串:

In[]:="This is a string."
Out[]=This is a string.

像输入数字一样,单独的字符串会原样返回——只是显示时引号不可见。


字符串中的字符可以是你电脑上能输入的任何内容,包括表情符号(emoji)。

字符串长度

StringLength 函数计算字符串中的字符数,返回字符串长度。

In[]:=StringLength["hello"]
Out[]=5

字符串反转

StringReverse 函数反转字符串中的字符:

In[]:=StringReverse["hello"]
Out[]=olleh

转大小写

ToUpperCase 函数将字符串中的字符转换为大写:

In[]:=ToUpperCase["I'm writing in the Wolfram Language!"]
Out[]=I'M WRITING IN THE WOLFRAM LANGUAGE!

对应ToLowerCase 函数转小写。

提取字符串

StringTake 从字符串开头提取n个字符,返回字符串长度为n:

In[]:=StringTake["this is about strings", 10]
Out[]=this is ab

字符串连接

StringJoin 连接字符串:

In[]:=StringJoin["Hello", " ", "there!", " How are you?"]
Out[]=Hello there! How are you?


如果需要分隔单词不要忘记头/尾空格

文本列表

字符串列表

可以创建字符串列表,然后对它们应用函数。
StringTake函数应用于字符串列表,从每个字符串取前两个字符:

In[]:=StringTake[{"apple", "banana", "strawberry"}, 2]
Out[]={"ap", "ba", "st"}

StringJoin 函数可以连接列表中的字符串:

In[]:=StringJoin[{"apple,", " banana,", " strawberry"}]
Out[]=apple, banana, strawberry

字符列表

回顾在列表运算一章中介绍了将整数拆分为数字列表。
同样可以把字符串拆成字符列表 ,即长度为 1 的字符串。

Characters 将字符串分解为字符列表:

In[]:=Characters["wolfram"]
Out[]={"w", "o", "l", "f", "r", "a", "m"}

一旦把字符串拆成字符列表,就可以使用所有常见的列表函数。
使用Sort函数对字符排序:

In[]:=Sort[Characters["a string of characters"]]

请添加图片描述

列表开头不可见的元素是空格字符。
如果你想看到像输入时那样带引号的字符串,使用 InputForm

InputForm 以输入形式显示字符串,包括引号:

In[13]:=InputForm[Sort[Characters["a string of characters"]]]

文本函数

文本函数用于处理有意义的文本。

单词列表

TextWords 函数返回文本字符串中的单词列表:

In[]:=TextWords["This is a sentence. Sentences are made of words."]
Out[]={This, is, a, sentence, Sentences, are, made, of, words}

嵌套使用会给出每个单词的长度:

In[]:=StringLength[
 TextWords["This is a sentence. Sentences are made of words."]]
Out[]={4, 2, 1, 8, 9, 3, 4, 2, 5}

句子列表

TextSentences 函数将文本字符串分割为句子列表:

In[]:=TextSentences["This is a sentence. Sentences are made of words."]
Out[]={This is a sentence., Sentences are made of words.}

文本导入

有许多方法可以把文本导入 Wolfram 语言
例如 WikipediaData 函数可以获取维基百科文章的当前文本。

获取“computers”条目的前 100 个字符:

In[]:=StringTake[WikipediaData["computers"], 100]

请添加图片描述

词云

创建词云是快速了解文本内容的便捷方法。
函数 WordCloud 可用于此。

为“computers”维基百科文章创建词云:

In[]:=WordCloud[WikipediaData["computers"]]

请添加图片描述
“computer” 和 “computers” 是文章中最常见的词。

单词列表

Wolfram 语言 对英语和其他语言中出现的词有大量内置知识。
WordList 返回单词列表。

常用英语单词列表长度:

In[]:=Length[WordList[]
Out[]=39176

长度代表了这个词表中的单词个数,可以看出这个内置词表还是相当大的。

生成单词列表首字母词云:

In[]:=WordCloud[StringTake[WordList[], 1]]

请添加图片描述
可以看出S开头的英语单词是最多的。

英语单词中结尾哪个字母最多?
通过字符串反转函数实现。

In[]:=WordCloud[StringTake[StringReverse[WordList[]],1]]

请添加图片描述
ye结尾的单词是最多的。

所有单词中哪个字母最多?

In[]:=WordCloud[Characters[StringJoin[WordList[]]]]

请添加图片描述
英语单词中哪个字母出现最多,你找到了吗。

字符串转换

字符串可以用非文本生成。

罗马数字

例如,我们可以将罗马数字作为字符串生成。

生成 2025 的罗马数字字符串:

In[]:=RomanNumeral[2025]
Out[]=MMXXV

生成 1 到 12的罗马数字表:

In[]:=Table[RomanNumeral[n], {n, 12}]

请添加图片描述

整数名称

IntegerName 给出整数的英文名称。

生成整数 2025的名称字符串:

In[]:=IntegerName[2025]
Out[]= 2 thousand 25

字母数字互转

有多种方式将字母与数字互转。

字母表

Alphabet 返回字母表,默认英语:

In[]:=Alphabet[]

请添加图片描述
Alphabet 可指定非英语字母表:

In[]:=Alphabet["Greek"]

请添加图片描述

字面翻译

Transliterate函数将任意字母转写为英语字母

In[]:=Transliterate[Alphabet["Greek"]]

请添加图片描述

字母位置

LetterNumber 告诉字母在字母表中的位置:

In[]:=LetterNumber[{"w", "o", "l", "f", "r", "a", "m"}]
Out[]={23, 15, 12, 6, 18, 1, 13}

FromLetterNumber 做相反的操作:

In[]:=FromLetterNumber[{10, 11, 12, 13, 14, 15}]
Out[]={j, k, l, m, n, o}

文本栅格化

如果需要,你也可以把文本变成图像,然后使用图像处理对其进行操作。
函数 Rasterize 会把某物做成光栅(位图)。

生成一段文本的图像:

In[]:=Rasterize[Style["午", 80]]

请添加图片描述

对其进行图像处理:

In[]:=EdgeDetect[Rasterize[Style["午", 80]]]

请添加图片描述

下一步

声音

posted @ 2026-01-18 08:13  clnchanpin  阅读(2)  评论(0)    收藏  举报