Lua中的一些常用函数库实例讲解

前言

这篇文章将会来一些比较轻松的内容,就是简单的介绍一下Lua中几个常用的库。简单的说就是几个API的介绍。所以说,看起来比较容易,也没有多大的分量。就是纯粹的总结。使用库就是为了方便我们的开发,提高开发效率,同时也能保证代码的质量。希望大家以后也不要重复造轮子了。

数学库

数学库(math)由一组标准的数学函数构成。这里主要介绍几个常用的函数,其它的大家可以自行百度解决。

三角函数(sin,cos,tan……)

所有的三角函数都使用弧度单位,可以用函数deg(角度)和rad(弧度)来转换角度和弧度。示例代码:

代码如下:

print(math.sin(math.rad(30))) -- 0.5

谨记:三角函数的参数都是弧度,在实际使用中不要忘了,是弧度。

取整函数(floor,ceil)

floor:返回不大于x的最大整数;向下取整;
ceil:返回不小于x的最大整数;向上取整。示例代码:

代码如下:

print(math.floor(5.6)) -- 5
print(math.ceil(5.6)) -- 6

最大值和最小值(max,min)

max:取参数中的最大值;
min:取参数中的最小值。示例代码:

代码如下:

print(math.max(2, 3, 2, 14, 2, 30, -3)) -- 30
print(math.min(2, 3, 2, 14, 2, 30, -3)) -- -3

生成伪随机数的函数(random,randomseed)

在实际开发中,生成随机数的需求是经常有的。使用random和randomseed这两个函数就可以轻易的完成。math.random用于生成伪随机数,可以用3种方式来调用它:
(1)如果在调用时不提供任何参数,它将返回一个在区间[0, 1)内均匀分布的伪随机实数;
(2)如果提供了一个整数n作为参数,它将返回一个在区间[1, n]内的伪随机整数;
(3)如果提供了两个整数参数m和n,它将返回一个在区间[m, n]内的伪随机整数。
示例代码如下:

代码如下:

print(math.random()) -- 输出一个大于等于0,小于1的值
print(math.random(2)) -- 输出不是1就是2
print(math.random(3, 4)) -- 输出不是3就是4

如果你按照上面的代码运行,然后再看着我写的注释,你可能就要骂我了,什么破注释了,明显就是错的么?每次运行的输出结果都是一样的。是的,结果是一样的,这就要说到即将出场的math.randomseed。函数math.randomseed用于设置伪随机数生成器的种子数。(看到这里,我姑且认为你是已经有过一年编程经验的人员了,所以,你就不要问我什么是种子了,这种概念性的东西,我想百度百科或者维基百科比我更有指导意义)math.randomseed的唯一参数就是一个我们称为种子数的值。一般我们的做法是在一个程序启动时,用一个固定的种子数来调用它,以此初始化伪随机数生成器。那么如何设置这个math.randomseed的种子值呢?如果使用同一个种子值的话,每次得到的随机数就会是一样的,在实际开发中,一般都是使用当前时间作为种子值,比如:

代码如下:

math.randomseed(os.time())

这样就好了。一般在我们的程序启动时,初始化一次种子就足够了。我曾经傻傻的在一个循环中,使用math.random取随机数,每次都调用math.randomseed(os.time())设置种子值(为什么不可以?你可以自己试一试,看看结果。如果不懂,留下你的迷惑,我们继续交流)。

代码如下:

math.randomseed(os.time())
print(math.random()) -- 输出一个大于等于0,小于1的值
print(math.random(2)) -- 输出不是1就是2
print(math.random(3, 4)) -- 输出不是3就是4

这样就好了,运行一下,看看结果吧。

table库

table库是由一些辅助函数构成的,这些函数将table作为数组来操作(重点:作为数组来操作的)。

插入和删除函数

table.insert用于将一个元素插入到一个数组的指定位置,它会移动后续元素以空出空间。如果在调用table.insert时没有指定位置参数,则会将元素添加到数组末尾。示例代码:

代码如下:

local tb = {10, 20, 30}
table.insert(tb, 40) -- 在table的最后插入,结果为:{10, 20, 30, 40}
table.insert(tb, 2, 15) -- 在table的位置2插入,结果为:{10, 15, 20, 30, 40}

函数table.remove会删除并返回数组指定位置上的元素,并将该位置之后的所有元素前移,以填补空缺。如果在调用这个函数时不指定位置参数,它就会删除数组的最后一个元素。示例代码:

代码如下:

local tb = {10, 20, 30}
print(table.remove(tb)) -- 删除最后一个元素,并返回30;最后,tb = {10, 20}
print(table.remove(tb, 1)) -- 删除第一个元素并返回10;最后,tb = {20}

现在有了这两个操作,实现数据结构中的堆栈那就轻而易举了。等什么?自己试一试吧。

排序

对数组进行排序,这种需求,在实际开发中那是100%会遇到的。所以了,不会使用Lua对数组进行排序,那是会被别人笑掉大牙的。废话少说。在Lua中,我们可以用table.sort完成这个任务。它可以对一个数组进行排序,还可以指定一个可选的次序函数。这个次序函数有两个参数,如果希望第一个参数在排序结果中位于第二个参数值前,就应当返回true;如果没有提供这个函数,table.sort就使用默认的小于操作。实例代码:

代码如下:

local tb = {20, 10, 2, 3, 4, 89, 20, 33, 2, 3}
 
-- 默认是升序排序
table.sort(tb)
for _, v in ipairs(tb) do
    print(v)
end
 
print("=======")
 
-- 修改为降序排序
table.sort(tb, function (a, b) if a > b then return true end end)
for _, v in ipairs(tb) do
    print(v)
end

但是,在实际开发中,我们经常犯这样的错误,总是试图对一个table的索引进行排序。在table中,索引是一个无序的集合。如果对它们进行排序,则必须将它们复制到一个数组中,然后对这个数组进行排序。这就是我为什么一开始强调的,table库是对数组进行操作的。示例代码:

代码如下:

local tb = {x = 20, z = 10, y = 30, m = 2, n = 8} -- 这是一个key无序的table
-- 如果想按照key的升序排列,下列代码是不起作用的
table.sort(tb)
for k, v in pairs(tb) do
    print(k .. " = " .. v)
end

正确做法是将这个table的所有key放入到一个数组中,对这个数组进行排序。示例代码:

代码如下:

local tb = {x = 20, z = 10, y = 30, m = 2, n = 8} -- 这是一个key无序的table
 
local keyTb = {}
for k, _ in pairs(tb) do
    keyTb[#keyTb + 1] = k
end
 
table.sort(keyTb)
 
for _, v in ipairs(keyTb) do
    print(v .. " = " .. tb[v])
end

现在就是按照key的升序排列了。

连接

使用table.concat可以完成数组的连接。它接受一个字符串数组,并返回这些字符串连接后的结果,它有一个可选参数,用于指定插到字符串之间的分隔符,同时这个函数另外还接受两个可选参数,用于指定第一个和最后一个要连接的字符串索引。示例代码:

代码如下:

local tb = {"Jelly", "Think", "Is", "Good"}
local strTb = table.concat(tb, " ")
print(strTb)

字符串库

重点来了,学习每种语言,在实际工作时,我们总是在和字符串进行打交道。Lua也不例外,在Lua中真正的字符串操作能力来源于字符串库,字符串库中的所有函数都导出在模块string中。现在就来对string库进行总结。

基础字符串函数

直接通过代码来说吧,示例代码:

代码如下:

local str = "Jelly Think"
 
-- string.len可以获得字符串的长度
local len = string.len(str)
print(len) -- 11
 
-- string.rep返回字符串重复n次的结果
str = "ab"
local newStr = string.rep(str, 2) -- 重复两次
print(newStr) -- abab
 
-- string.lower将字符串小写变成大写形式,并返回一个改变以后的副本
str = "Jelly Think"
newStr = string.lower(str)
print(newStr) -- jelly think
 
-- string.upper将字符串大写变成小写形式,并返回一个改变以后的副本
newStr = string.upper(str)
print(newStr) -- JELLY THINK

这里重点介绍一下string.sub(s, i, j)函数,它可以从字符串s中提取第i个到第j个字符。在Lua中,字符串的第一个字符的索引是1,但是,索引也可以是负数,表示从字符串的尾部开始计数,索引-1代表字符串的最后一个字符,以此类推。

代码如下:

local str = "[Jelly Think]"
local newStr = string.sub(str, 2, -2)
print(newStr) -- Jelly Think
newStr = string.sub(str, 2, 6)
print(newStr) -- Jelly

(重点:在Lua中,字符串和其它语言的一样,是不可变的,以上的操作,都会返回一个新的值,但并不会修改原来的字符串。谨记,谨记!!!)
函数string.char和函数string.byte用于转换字符及其内部数值表示;string.char函数接受零个或多个整数,并将每个整数转换成对应的字符,然后返回一个由这些字符连接而成的字符串。string.byte(s, i)返回字符串s中第i个字符的内部数值表示,它的第二个参数是可选的,调用string.byte(s)可返回字符串s中第一个字符的内部数值表示。示例代码:

代码如下:

print(string.char(97)) -- a
 
local i = 98
print(string.char(i, i + 1, i + 2)) -- bcd
 
print(string.byte("abc")) -- 97
print(string.byte("abc", 2)) -- 98
print(string.byte("abc", 2, 3)) -- 98 99
print(string.byte("abc", -1)) -- 99

在Lua中也有一个神奇的函数,string.format。和C语言中的printf是一致的。之所以说它神奇,因为它用的太多了,也太好用了。以至于我这里就不多废话了,我相信你们都会的。

模式匹配

由于模式匹配的东西比较多,所以,准备单独写篇博文单独总结。

I/O库

I/O库为文件操作提供了两种不同的模型,简单模型和完整模型。简单模型假设有一个当前输入文件和一个当前输出文件,它的I/O操作均作用于这些文件。完整模型则使用显式地文件句柄。它采用了面向对象的风格,并将所有的操作定义为文件句柄上的方法。

简单I/O模型

简单模型的所有操作都作用于两个当前文件。I/O库将当前输入文件初始化为进程标准输入(stdin),将当前输出文件初始化为进程标准输出。在执行io.read()操作时,就会从标准输入中读取一行。

用函数io.input和io.output可以改变这两个当前文件。io.input(filename)调用会以只读模式打开指定的文件,并将其设定为当前输入文件;除非再次调用io.input,否则所有的输入都将来源于这个文件;在输出方面,io.output也可以完成类似的工作。说完了input和output,在来聊聊io.write和io.read。

io.write接受任意数量的字符串参数,并将它们写入当前输出文件;它也可以接受数字参数,数字参数会根据常规的转换规则转换为字符串。如果希望有更多的控制,可以使用string.format进行控制。函数io.read从当前输入文件中读取字符串,它的参数决定了要读取的数据:

“*all” 读取整个文件
“*line” 读取下一行
“*number” 读取一个数字
<num> 读取一个不超过<num>个字符的字符串

直接看一段示例代码吧:

代码如下:

-- 先建立input.txt和output.txt两个文件
-- 在input.txt文件中写入以下内容:
--[[
http://www.jb51.net
果冻想 | 一个原创文章分享网站
88
--]]
io.input("input.txt") -- 从input.txt文件中读取
io.output("output.txt") -- 写入到output.txt文件
 
-- 向input.txt写入一些测试数据
io.write("JellyThink", "\n")
io.write("果冻想", "\n")
io.write("http://www.jb51.net", "\n")
io.write(88)

读取一整个文件的示例代码:

代码如下:

str = io.read("*all") -- 读取所有
--[[
print(str)
http://www.jb51.net
果冻想 | 一个原创文章分享网站
88
--]]
print(str)

每次读取一行的示例代码:

代码如下:

-- 用来判断是否已经读到了文件末尾
-- 如果已经到了末尾,就返回nil;否则返回空字符串
local mark = io.read(0)
while mark do
    print(io.read("*line"))
    mark = io.read(0)
    if not mark then
        print("File end.")
        break
    end
end

完整I/O模型

简单I/O功能太受限了,以至于基本没有什么用处,而用的更多的则是这里说的完整I/O模型。完整I/O模型可以进行更多的I/O控制,它是基于文件句柄的,就好比与C语言中的FILE*,表示一个正在操作的文件。

要打开一个文件,可以使用io.open函数,它有两个参数,一个表示要打开的文件名,另一个表示操作的模式字符串。模式字符串可以有以下四种取值方式:

(1)”r”:以读取方式打开文件;只能对文件进行读取操作;
(2)”w”:以写入方式打开文件;可以对文件进行写入操作,但是会覆盖文件原有内容;
(3)”a”:以追加方式打开文件;可以对文件进行写入操作;会在原来文件的基础在,进行追加写入;
(4)”b”:表示打开二进制文件,这种模式一般都是和前面三种混合使用,比如:”rb”,”wb”。

open函数会返回表示文件的一个句柄;如果发生错误,就返回nil,一条错误消息和一个错误代码。示例代码:

代码如下:

-- 访问一个不存在的文件
print(io.open("ooxx.txt", r))
--[[
输出以下内容:
nil    ooxx.txt: No such file or directory    2
--]]

当成功打开一个文件以后,就可以使用read/write方法读写文件了,这与read/write函数相似,但是需要用冒号语法,将它们作为文件句柄的方法来调用,示例代码:

代码如下:

local hFile = io.open("input.txt", r)
if hFile then
    local strContent = hFile:read("*all")
    --local strContent = hFile.read(hFile, "*all") 你也可以使用这种方法
    print(strContent)
end

我们也可以将完整I/O模式与简单I/O模式混合使用。通过不指定参数调用io.input(),可以得到当前输入文件的句柄;而通过io.input(handle),可以设置当前输入文件的句柄,比如,需要临时改变当前输入文件,可以这样做:

代码如下:

-- io.input()不传入参数时,获取当前的输入文件句柄
local hCurrent = io.input()
 
-- 打开一个新的文件
io.input("input.txt")
 
-- 在新的文件上进行操作
local strContent = io.read("*all")
print(strContent)
 
-- 关闭当前文件
io.input():close()
 
-- 操作完成以后,恢复到以前的状态
io.input(hCurrent)

其它文件操作

函数tmpfile返回一个临时文件的句柄,这个句柄是以读/写方式打开;这个文件会在程序结束时自动删除。我们在使用时,可以直接io.tmpfile()就ok了。
函数flush会将缓冲区中数据写入文件,它与write函数一样,将其作为一个函数调用时,io.flush()会刷新当前输出文件;而将其作为一个方法调用时,f:flush()会刷新某个特定的文件f。

函数seek可以获取和设置一个文件的当前位置。它的一般形式是f:seek(whence, offset),其参数的具体含义如下:

(1)whence取值set,offset表示为相对于文件起始的偏移量;
(2)whence取值cur,offset表示为相对于当前位置的偏移量;
(3)whence取值end,offset表示为相对于文件末尾的偏移量。

函数的返回值与whence无关,它总是返回文件的当前位置,即相对于文件起始处的偏移字节数。根据上述的描述,来一小段示例代码:

代码如下:

function GetFileSize(hFile)
    local currentPos = hFile:seek() -- 获取当前位置
    local size = file:seek("end") -- 获取文件大小
    file:seek("set", currentPos)
    return size
end

操作系统函数

操作系统库定义在table os中,其中包含了文件操作函数、获取当前日期和时间的函数。为了保证Lua的可移植性,所以对于文件库来说,就比较简单,它只包含两个函数:

用于文件改名的os.rename函数;
用于删除文件的os.remove函数。

但是对于获取日期和时间的函数,还是有必要花费一点时间总结一下的。

日期与时间

在Lua库中提供了两个非常重要的日期和时间函数,分别是time和date。那就先从time函数开始。

time

如果不带任何参数调用time函数,它会以数字形式返回当前的日期和时间。返回的数值表示当前时间到某个特定时间的秒数,在不同的系统上,这个特定的时间是不一样的。如果用一个table作为参数调用它,它会返回一个数字,表示该table中所描述的日期和时间。这种table具有以下有效字段:

year 一个完整的年份
month 01-12
day 01-31
hour 00-23
min 00-59
sec 00-59
isdst 一个布尔值,true表示夏令时

前三个字段是必须要有的,比如:

代码如下:

print(os.time()) -- 输出当前时间的描述
print(os.time({year=2014,month=8,day=14}))

date

函数date是time的一个反函数,它可以将一个表示日期和时间的数字转换成某些高级的表现形式。其第一个参数是格式字符串,指定了期望的表示形式;第二个参数是日期和时间的数字,默认为当前日期和时间。例如:

代码如下:

local tbCurrentTime = os.date("*t")
 
for k, v in pairs(tbCurrentTime) do
    print(k .. "=" .. tostring(v))
end

这样就会输出当天的时间,你运行以下代码看看。其实data函数没有多少需要说的。只是data函数的第一个参数的格式种类是非常多的,可以去百度一下。我一般用一个*t就够了。但是了解一下其它的也还不错。

对于这里说到的time和date两个函数,一般time函数返回的描述不适合人去读,我们一般都是保存这个数字,在后台进行处理;对于date函数,它返回的内容适合人去读,所以,一般使用date返回的数据在UI上显示。

总结

对于任何语言来说,一个标准库都是一个非常庞大的东西,Lua也是这样,所以这篇文章写的也比较长。抱歉,这只是第一部分,后面还有第二部分。所以呢,大家还是将就着看吧。虽然深的东西没有多少,但是这也是我们入门一门语言的必经之路。少年们,努力吧。

(0)

相关推荐

  • Lua中os库详细介绍

    这个库通过表os实现 os.clock () 功能:返回一个程序使用CPU时间的一个近似值 例如: 复制代码 代码如下: local x = os.clock(); print(os.clock()) local s = 0; for i = 1, 100000000 do       s = s + i; end print(string.format("elapsed time : %.2f\n", os.clock() - x)); 输出: 复制代码 代码如下: 0 elapse

  • Lua教程(十六):系统库(os库)

    Lua为了保证高度的可移植性,因此,它的标准库仅仅提供了非常少的功能,特别是和OS相关的库.但是Lua还提供了一些扩展库,比如Posix库等.对于文件操作而言,该库仅提供了os.rename函数和os.remove函数. 1. 日期和时间: 在Lua中,函数time和date提供了所有的日期和时间功能. 如果不带任何参数调用time函数,它将以数字形式返回当前的日期和时间.如果以一个table作为参数,它将返回一个数字,表示该table中所描述的日期和时间.该table的有效字段如下: prin

  • Nginx+lua 实现调用.so文件

    最近在和智能硬件部门一起,做一个室内定位的服务,该服务根据手机端传过来的beacon设备列表,根据一定的算法计算出具体的商场,并将商场ID和beason设备列表作为参数,调用.so文件中的计算方法,得出位置数据(坐标:x.y.z),返回给手机端. 因为服务对QPS要求比较高,并且都是纯查询操作,于是决定使用Nginx+lua+Redis的架构(该架构在公司内部已成主流,比较成熟).下面我将对lua调用.so文件的方式,做一下介绍. lua调用.so文件,主要有两种方式: 1.Lua直接调用动态链

  • Lua中的数学库总结

    Lua5.1中数学库的所有函数如下表: math.pi 为圆周率常量 = 3.14159265358979323846 abs 取绝对值 math.abs(-15) 15 acos 反余弦函数 math.acos(0.5) 1.04719755 asin 反正弦函数 math.asin(0.5) 0.52359877 atan2 x / y的反正切值 math.atan2(90.0, 45.0) 1.10714871 atan 反正切函数 math.atan(0.5) 0.463647609 c

  • Lua中的常用函数库汇总

    lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error("error message",level) - 发生错误时,输出一条定义的错误信息.使用pcall() (见下面)捕捉错误

  • 简介Lua脚本与Redis数据库的结合使用

    可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧?  这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言. Hello, Lua! 我们的第一个Redis Lua 脚本仅仅返回一个字符串,而不会去与redis 以任何有意义的方式交互. 复制代码 代码如下: local msg = "Hello, world!" return msg 这是非常简单的,第一行代码定义了一个本地变量msg存储我们的信息, 第二行代码表示 从redis 服务端返回msg

  • Lua中的一些常用函数库实例讲解

    前言 这篇文章将会来一些比较轻松的内容,就是简单的介绍一下Lua中几个常用的库.简单的说就是几个API的介绍.所以说,看起来比较容易,也没有多大的分量.就是纯粹的总结.使用库就是为了方便我们的开发,提高开发效率,同时也能保证代码的质量.希望大家以后也不要重复造轮子了. 数学库 数学库(math)由一组标准的数学函数构成.这里主要介绍几个常用的函数,其它的大家可以自行百度解决. 三角函数(sin,cos,tan--) 所有的三角函数都使用弧度单位,可以用函数deg(角度)和rad(弧度)来转换角度

  • python中 chr unichr ord函数的实例详解

    python中 chr unichr ord函数的实例详解 chr()函数用一个范围在range(256)内的(就是0-255)整数作参数,返回一个对应的字符.unichr()跟它一样,只不过返回的是Unicode字符,这个从Python 2.0才加入的unichr()的参数范围依赖于你的python是如何被编译的.如果是配置为USC2的Unicode,那么它的允许范围就是range(65536)或0x0000-0xFFFF:如果配置为UCS4,那么这个值应该是range(1114112)或0x

  • vue2.0 常用的 UI 库实例讲解

    1.mint-ui 安装: npm install mint-ui --save 使用: main.js // MintUI组件库 import MintUI from 'mint-ui' import 'mint-ui/lib/style.css' Vue.use(MintUI) 2.vux 安装: npm install vux --save npm install vux-loader --save 使用: vux2必须配合vux-loader使用, 请在build/webpack.bas

  • Python中openpyxl实现vlookup函数的实例

    相信很多学编程的人都对Vlookup函数不陌生,一些在excel中不方便处理的大量数据,用Python就可以轻松解决.下面介绍openpyxl库中如何实现vlookup函数 : 1.数据源介绍 如图所示,有一个" vlookup.xlsx "文件," A1:F11 "是我们的数据源区域," K1:L5 "是我们的查找源区域.我们的目的就是要在数据源区域的 G 列加一列数据,查找出不同类型下名称表示. 2.Vlookup函数介绍 这个函数我想大家应

  • oracle中的一些常用函数及示例

    前言 学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函数及示例,一是为了和大家分享,二是可以在以后工作中忘记了随时查阅.废话不多说,下面直接上函数. 一.单行函数 只处理单个行,并且为每行返回一个结果. 1.字符函数 (1)concat(str1,str2)字符串拼接函数 select concat('Hello ','World') from

  • python中几个常用函数的正确用法-lambda/filter/map/reduce

    目录 1 lambda 2 filter 3 map 4 reduce 5 联合使用 lambda/filter/map/reduce这几个函数面试中很肯定会用到,本篇主要介绍这几个函数的用法. 1 lambda 匿名函数,用法如下: # lambada 参数,参数,参数 : 返回的表达式 示例1: f = lambda x, y: x * y print(f(2, 3)) # 6 示例2: r = (lambda x, y: x+y)(1, 2) print(r) # 3 2 filter f

  • python 调用c语言函数的实例讲解

    虽然python是万能的,但是对于某些特殊功能,需要c语言才能完成.这样,就需要用python来调用c的代码了 具体流程: c编写相关函数 ,编译成库 然后在python中加载这些库,指定调用函数. 这些函数可以char ,int, float, 还能返回指针. 以下示例: 通过python调用c函数,返回"hello,world 字符串" 新建c语言文件 hello.c touch hello.c #include <stdio.h> char *get_str() {

  • JavaScript 中的执行上下文和执行栈实例讲解

    JavaScript - 原理系列 ​ 在日常开发中,每当我们接手一个现有项目后,我们总喜欢先去看看别人写的代码.每当我们看到别人写出很酷的代码的时候,我们总会感慨!写出这么优美而又简洁的代码的兄弟到底是怎么养成的呢? ​ 我要怎样才能达到和大佬一样的水平呢!好了,废话不多说,让我们切入今天的主题. 一.执行上下文 ​ 简而言之,[执行上下文]就是JavaScript 代码被解析和执行时所在环境的抽象概念, 在JavaScript 中运行任何的代码都是在它的执行上下文中运行. ​ 在运行Java

  • python wordcloud库实例讲解使用方法

    目录 1.词云库简介 2.词云库的基本使用 3.wordcloud使用实例-在图形中生成词云 1.词云库简介 wordcloud库是python中的一个第三方库,wordcloud直译过来是“词云” 词云:以词语为基本单位,更加直观和艺术的展示文本. 另外词云库需要先自行安装 安装方法: 命令行安装:cmd中执行pip install wordcloud命令 自己去python官网下载whl文件再安装 在编辑器中安装(pycharm可在python package栏搜索wordcloud下载)

  • 在Windows中设置Python环境变量的实例讲解

    在 Windows 设置环境变量 在环境变量中添加Python目录: 在命令提示框中(cmd) : 输入 path=%path%;C:\Python 按下"Enter". 注意: C:\Python 是Python的安装目录. 也可以通过以下方式设置: • 右键点击"计算机",然后点击"属性" • 然后点击"高级系统设置" • 选择"系统变量"窗口下面的"Path",双击即可! • 然后

随机推荐