初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点:

个人主页:我要学编程(ಥ_ಥ)-CSDN博客

所属专栏: Python

目录

字符串的常见操作 

格式化字符串

占位符

f-string 

字符串的 format 方法 

字符串的编码与解码 

与数据验证相关的方法

字符串的拼接 

字符串的去重操作 


字符串的常见操作 

字符串是Python中的不可变数据类型,在最开始时,我们只是简单地学习了字符串的使用,并未深入研究。既然字符串也是一种数据类型,那么它是否也和前面学习的列表、字典、集合这些数据类型一样有着大量的操作方法呢?答案是有的,我们今天就来深入学习这些方法。

常见的操作字符串的方法
方法名说明
lower()将字符串str全部转成小写字母,结果为一个新的字符串
upper()将字符串str全部转成大写字母,结果为一个新的字符串
split(set=None)把str按照指定的分隔符sep进行分隔,分割之后的结果为列表类型,其中的元素便是被分割后的字符串
count(sub)结果为sub的这个字符串在str中出现的次数
find(sub)查询sub这个字符串在str中是否存在,如果不存在结果为-1,如果存在结果为sub首次出现的索引
index(sub)功能与find(相同,区别在于要查询的子串sub不存在时,程序报错
startswith(s)查询字符串str是否以字符串s开头
endswith(s)查询字符串str是否以字符串s结尾
replace(old, news)使用news替换字符串s中所有的old字符串,结果是一个新的字符串
center(width, fillchar)字符串str在指定的宽度范围内居中,可以使用fillchar进行填充
join(iter)在iter中的每个元素的后面都增加一个新的字符串str
strip(chars)从字符串中去掉左侧和右侧chars中列出的字符串
lstrip(chars)从字符串中去掉左侧chars中列出的字符串
rstrip(chars)从字符串中去掉右侧chars中列出的字符串

代码演示:

str = 'Hello Python'
print('开始一系列字符串操作')
lower_str = str.lower()
print('将字符串变成小写:',lower_str)
upper_str = str.upper()
print('将字符串变成大写:',upper_str)
list = str.split(' ')
print('以空格分割字符串:',list)
count = str.count('o')
print('字符串中"o"出现的次数:',count)
a = str.find('o')
b = str.index('o')
print('字符串中"o"出现的索引位置:',a,b)print('字符串是不是以"hello"作为起始子串呢?',str.startswith('hello'))
print('字符串是不是以"Hello"作为起始子串呢?',str.startswith('Hello'))print('字符串是不是以"python"作为结束子串呢?',str.endswith('python'))
print('字符串是不是以"Python"作为起始子串呢?',str.endswith('Python'))

运行结果:

 注意:在判断是否为起始子串、结束子串时,参数中的字符串不需要是子串,也可以是非子串。上述代码中的 "hello" 便是非子串。

 从上述的结果,也可以看出字符串的相关操作并不会改变字符串本身。简单理解就是 全都是生成一个新的字符列表对象,然后在这个列表中进行一系列的操作,然后改成新的字符串返回。

我们再来通过代码实现剩下的方法操作。

代码演示:

str = 'Hello Python'# 替换字符串中的部分字符
print(str.replace('Hello','Hi')) # 在最后面还可以指定参数
print(str.replace('Hello','Hi',0)) # 指定替换0次,即不替换# 填充部分字符,是字符串在指定的范围内处于居中位置
print(str.center(20)) # 在长度为20的空间中,默认使用空白字符填充,是字符串处于居中位置
print(str.center(20, '*')) # 在上面的基础上,使用"*"进行填充
print(str.center(10,'*')) # 当字符串本身超出 width 时,就直接打印输出# 在字符串str后面的每个字符元素中,加上"  "(两个空格)
print('  '.join(str))# 将 '  hhh  ' 中的空格全部去掉(默认是去掉空格),再使用'*'去替换空格
print('  hhh  '.strip().replace(' ','*'))
print('  hhh  '.replace(' ','*'))
# 观察上面两个的不同,或者写成下面这样print('***hhh***'.strip('*')) # 直接将'*'从字符串中去除
print('***hhh***'.lstrip('*')) # 直接将左边'*'从字符串中去除
print('***hhh***'.rstrip('*')) # 直接将右边'*'从字符串中去除
# 注意下面这种情况,是不能成功去除的
print('*1**hhh***'.lstrip('*')) # 在去除'*'字符的过程中,遇到非'*'字符之后,就会停止去除print('经过一系列的字符串操作之后,原字符串为:'+str)

运行结果: 

格式化字符串

常见的格式化字符串方式有三种:1、占位符的形式;2、f-string的形式;3、str.format()的形式。

占位符

在Python中常用的占位符有三个:1、%s -> 代指字符串;2、%d -> 代指十进制的整数;3、%f -> 代指浮点数。

语法格式:

# 可以理解为是将后面的参数直接带入到 %s、%d、%f 中
# 这里的 %s、%d、%f 只是占了个位置罢了,故名:占位符
# str % () --> 字符串 % 元组,占位符使用元组来替代
print('姓名: %s, 年龄: %d, 成绩: %f' % (name, age, score))

代码演示:

name = '马冬梅'
age = 18
score = 98.5# 使用了 .1f 之后,可以让浮点数只输出一位
print('姓名:%s, 年龄:%d, 成绩:%f' % (name, age, score))
print('姓名:%s, 年龄:%d, 成绩:%.1f' % (name, age, score))

除了上述 .1f 之外,还有 5d 这种写法,小数点后面的是保证位数,小数点前面的是保证输出总长度,当总长度小于我们设置的总长度时,就会使用空格填充,如果是 5d 的写法,就是填充在左边,也就是右对齐;反之,如果是 -5d 的写法,就是填充在右边,也就是左对齐的写法。 scanf与printf函数的详细介绍及其用法_printf 换行符-CSDN博客 可以去看这篇文章,介绍的比较详细,虽然是C语言,但是概念是差不多的(输出格式)。

f-string 

语法格式:

# f-string ,使用的就是 fstring的形式
# 这里是把要使用变量替代的全部放到了{}中,这样在打印时,就会将{}中的变量替换为真实的值
print(f'姓名: {name}, 年龄: {age}, 成绩:{score}')

代码演示: 

name = '马冬梅'
age = 18
score = 98.5# 使用f-string
print(f'姓名:{name}, 年龄:{age}, 成绩:{score}')

字符串的 format 方法 

语法格式:

# str.format() 与 f-string 有点类似,都是使用 {} 来标明需要替换的元素
# 但是 f-string 是直接从上文中取,而 str.format 是从format参数中寻找
# 0、1、2 对应的是 format参数中索引的位置,0 是 name的索引,所以就让 name 来替换0
print('姓名: {0}, 年龄:{1}, 成绩:{2}'.format(name, age, score))
# 下面的写法也是符合要求的,2 是 name的索引,所以使用name来替换2
print('姓名:{2}, 年龄:{1}, 成绩:{0}'.format(score, age, name))

代码演示:

name = '马冬梅'
age = 18
score = 98.5# 使用字符串的format方法
print('姓名:{0}, 年龄:{1}, 成绩:{2}'.format(name, age, score))
# 上述的0、1、2指的是format方法中的参数的索引位置,可以写成下面这样
print('姓名:{2}, 年龄:{1}, 成绩:{0}'.format(score, age, name))

上面三种格式化的方式,写在一起的运行结果:

格式化字符串的详细格式还是有很多的,下面来认识其他的格式。

 代码演示:

s = 'Hello Python'
# 直接使用0去代指format中的参数
print('{0}'.format(s))
# : 是引导符,表明后面开始的操作是对参数的格式化
# * 是填充符,表明当长度不足时,使用 * 来填充
# < 是向左对齐、20 是字符串的总长度,不足时使用填充符来填充
print('{0:*<20}'.format(s))
# ^ 居中对齐、- 使用"-"填充空闲的位置
print('{0:-^20}'.format(s))
# 超出长度,就啥也不做
print('{0:*^5}'.format(s))
# 默认使用 空白字符 填充
print('{0:^20}'.format(s))

运行结果:

代码演示:

# 千位分隔符:只适用于整数与浮点数
# 且针对浮点数时,只会将其整数部分进行分割,而小数部分不会做任何处理
print('{0:,}'.format(1234567890))
print('{0:,}'.format(1234567890.987654321))# .精度 ——> 参数为字符窜时,是显示最大的长度,参数为浮点数时,是显示小数的最大长度
# 针对字符串时,不需要加f,而针对浮点数时,需要加上f
print('{0:.2f}'.format(3.1415926535))
print('{0:.5}'.format('Hello Python'))# 类型
a = 8
print('二进制:{0:b}'.format(a))
print('八进制:{0:o}'.format(a))
print('十进制:{0:d}'.format(a))
print('十六进制:{0:x}'.format(a))
print('十六进制:{0:X}'.format(a))

运行结果:

字符串的编码与解码 

我们现在所处的时代是互联网时代,通信的方式也是发生了变化。现在的通信主要是网络通信,一台机器上的数据经过一系列的处理变为了二进制数据,然后再通过网卡以二进制的形式传输出去(电信号的高低电平表示1与0、光信号的频率高低表示1与0) ,这些数据经过互联网就被另一台机器的网卡给接收到了,然后开始对二进制数据进行解析,变为最终通信的数据。上述过程就是不同机器的基本通信过程,如果想要详细了解,可以去看下面的文章。初始JavaEE篇 —— 网络编程(1):基础的网络知识-CSDN博客 

在Python中,将字符串的转换为二进制数据的过程就称为编码的过程;反之,将二进制数据转换为字符串的过程就称为解码的过程。

在Python中,编码所使用的方法是 encode,解码所使用的方法是 decode。

语法格式:

# encoding 是指定要编码的方式,默认是utf-8
# errors 是指定编码错误的处理方式,常见的有三种方式:
# 1、strict ——> 遇到编码错误时,直接抛出异常。这也是默认的处理方式
# 2、ignore ——> 直接忽略编码错误的字符,可以认为是直接跳过了这个字符,去处理后面的字符
# 3、replace ——> 用 ? 去代替编码错误的字符str.encode(encoding='utf-8', errors='strict/ignore/replace')bytes.decode(encoding='utf-8', error='strict/ignore/replace')

代码演示:

# 编码过程
s = 'Hello Python'
print('原始的数据:%s' % s)
s_encode = s.encode() # 都采用默认的方式
print('编码之后的数据类型:',type(s_encode))
print('编码之后的结果:',s_encode)# 解码过程
s_decode = s_encode.decode() # 也是采用默认的方式
print('解码之后的结果:%s' % s_decode)

运行结果:

上面是对于英文的编码与解码演示,从结果上面来看就是在要传输的基础上加了个前缀b,同样对于数字字符串也是如此,下面我们来看看中文的编码与解码。

代码演示:

# 编码过程
s = '伟大的中国梦'
print('原始的数据:%s' % s)
s_encode = s.encode() # 都采用默认的方式
print('编码之后的数据类型:',type(s_encode))
print('编码之后的结果:',s_encode)# 解码过程
s_decode = s_encode.decode() # 也是采用默认的方式
print('解码之后的结果:%s' % s_decode)

运行结果:

从上面的对比,我们可以得出一个结论:对于英文字符与数字在经过UTF-8编码后,是不变的,而大多数汉字字符在经过UTF-8之后,一个汉字字符对应着三个编码后的字符。 这是因为在UTF-8编码中规定的是大多数的中文字符占三个字节,而在传统的gbk编码中,中文是占两个字节的,因此使用不同的编码方式,最终形成的字节数也是不同的。

我们接下来就来看编码与解码的方式不同,会出现什么样的问题。

 当然我们也可以让其直接忽略或者是用?来替换

# 编码过程
s = '伟大的中国梦'
print('原始的数据:%s' % s)
s_encode = s.encode() # 都采用默认的方式
print('编码之后的数据类型:',type(s_encode))
print('编码之后的结果:',s_encode)# 解码过程
# 采用ascii码值的方式去解码,并且对解码错误的处理方式采用忽略。
# 因为全部的编码都会解码失败,因此最终的解码结果就是啥也没有
s_decode = s_encode.decode(encoding = 'ascii',errors='ignore') 
print('解码之后的结果:%s' % s_decode)

运行结果:

下面是使用replace的结果:

与数据验证相关的方法

数据的验证是指程序对用户输入的数据进行“合法”性验证。主要是使用以下八种方法:

数据的验证
方法名说明
isdigit()所有的字符都是数字(只能是阿拉伯数字)
isnumeric()所有的字符都是数字
isalpha()所有的字符都是字母(包含中文字符)
isalnum()所有的字符都是数字或者字母(包含中文字符)
islower()所有的字符都是小写
isupper()所有的字符都是大写
istitle()所有的字符都是首字母大写
isspace()所有的字符都是空白字符(制表符(\t)、换行符(\n)等)

 代码演示:

# 判断所有的字符都是数字
# 下面依次是 阿拉伯数字、中文小写、罗马数字、中文大写、二进制数字
print('123'.isdigit()) # True
print('一二三'.isdigit()) # False
print('I'.isdigit()) # False
print('壹'.isdigit()) # False
print('b0101'.isdigit()) # Falseprint('-'*20)# 判断所有的字符都是数字
# 下面依次是 阿拉伯数字、中文小写、罗马数字、中文大写、二进制数字
print('123'.isnumeric()) # True
print('一二三'.isnumeric()) # True
print('I'.isnumeric()) # False
print('壹'.isnumeric()) # True
print('b0101'.isnumeric()) # Falseprint('-'*20)# 判断所有的字符都是字母
print('hello你好'.isalpha()) # True
print('hello你好123'.isalpha()) # False
print('hello 你好'.isalpha()) # Falseprint('-'*20)# 判断所有的字符都是数字或者字母
print('hello你好'.isalnum()) # True
print('hello你好123'.isalnum()) # True
print('hello-你好-123'.isalnum()) # False
print('hello 你好'.isalnum()) # Falseprint('-'*20)# 所有的字符都是小写
# 中文既是大写也是小写
print('hello'.islower()) # True
print('hello你好'.islower()) # True
print('Hello'.islower()) # False
print('HELLO'.islower()) # Falseprint('-'*20)# 所有的字符都是大写
# 中文既是大写也是小写
print('hello'.isupper()) # False
print('hello你好'.isupper()) # False
print('Hello'.isupper()) # False
print('HELLO'.isupper()) # Trueprint('-'*20)# 所有的字符都是首字母大写
# 通过 空格 来区分单词
print('Hello'.istitle()) # True
print('HelloWorld'.istitle()) # False
print('Helloworld'.istitle()) # True
print('Hello World'.istitle()) # Trueprint('-'*20)# 所有的字符都是空白字符
print('   '.isspace()) # True
print('\n'.isspace()) # True
print('\t'.isspace()) # True
print('123\t'.isspace()) # False

字符串的拼接 

字符串的拼接是根据数据类型的不同,从而采取不同的方法。例如,当要拼接的数据类型是字符串本身时,完全可以使用 + 的直接拼接方法。

1、使用 str.join() 方法进行拼接字符串

2、直接使用"+"拼接字符串

3、使用格式化字符串进行拼接

代码演示:

s1 = 'hello'
s2 = 'python'# 1、采用 str.join()方法
# 使用字符串的内容去替代参数中的元素之间的分隔符
print(''.join([s1, s2]))
print(''.join((s1, s2)))# 2、直接拼接
print(s1+s2)
# 简单粗暴的方式
print('hello''python')# 3、采用格式化字符串的方式
print(f'{s1}{s2}')
print('{0}{1}'.format(s1, s2))

运行结果:

字符串的去重操作 

当字符串中重复出现多个字符时,如果我们想去除重复的字符,拿到不重复的字符,就可以采用下面的方法。

1、遍历字符串,判断是否在新字符串中,不在则加上这个字符,最终遍历完成之后,得到的就是去重之后的字符串。

2、使用哈希的思想(就是使用集合),来去重。

代码演示:

s = 'hello worldhello worldhello worldhello world'
# 1、遍历+判断:
new_s1 = ''
for char in s:if char not in new_s1:new_s1 += char
print(new_s1)new_s2 = ''
for i in range(len(s)):if s[i] not in new_s2:new_s2 += s[i]
print(new_s2)# 2、哈希思想去重
new_s3 = set(s) # 得到的集合中只剩下不重复的元素了
# 但因为集合是无序的,因此我们按照原来字符串的顺序来排序,需要转化为列表
list_S = list(new_s3)
# 将列表中的字符按照字符串中的索引来进行排序
list_S.sort(key=s.index)
# 最终再转换为字符串类型
print(''.join(list_S))

运行结果:

好啦!本期 初始Python篇(6)—— 字符串 的学习之旅 就到此结束啦!我们下一期再一起学习吧!

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

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

相关文章

从 CephFS 到 JuiceFS:同程旅游亿级文件存储平台构建之路

随着公司业务的快速发展&#xff0c;同程旅行的非结构化的数据突破 10 亿&#xff0c;在 2022 年&#xff0c;同程首先完成了对象存储服务的建设。当时&#xff0c;分布式文件系统方面&#xff0c;同程使用的是 CephFS&#xff0c;随着数据量的持续增长&#xff0c;CephFS 的高…

Jenkins参数化构建详解(This project is parameterized)

本文详细介绍了Jenkins中不同类型的参数化构建方法&#xff0c;包括字符串、选项、多行文本、布尔值和git分支参数的配置&#xff0c;以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…

【图像处理】利用numpy实现直方图均衡、自适应直方图均衡、对比度受限自适应直方图均衡

直方图均衡化是一种在图像处理技术&#xff0c;通过调整图像的直方图来增强图像的对比度。 本博客不利用opencv库&#xff0c;仅利用numpy、matplotlib来实现直方图均衡、自适应直方图均衡、对比度受限自适应直方图均衡 直方图均衡 包括四个流程 计算图像RGB三通道的归一化直…

组织空转数据(人类+小鼠)

空间转录组&#xff08;Spatial Transcriptomics&#xff09;是一种新兴的高通量基因组学技术&#xff0c;它允许我们在组织切片中同时获取基因表达信息和细胞的空间位置信息。其可以帮助我们更好地理解细胞在组织中的空间分布和相互作用&#xff0c;揭示组织发育、器官功能和疾…

[数据结构#1] 并查集 | FindRoot | Union | 优化 | 应用

目录 1. 并查集原理 问题背景 名称与编号映射 数据结构设计 2. 并查集基本操作 (1) 初始化 (2) 查询根节点 (FindRoot) (3) 合并集合 (Union) (4) 集合操作总结 并查集优化 (1) 路径压缩 (2) 按秩合并 3. 并查集的应用 (1) 统计省份数量 (2) 判断等式方程是否成…

JPA 基本查询(一)

JPA 查询简介示例 JPA教程 - JPA查询简介示例 最简单的JPQL查询选择单个实体类型的所有实例。 考虑下面的查询: SELECT e FROM Employee eJPQL尽可能使用SQL语法。 SQL查询从表中选择。JPQL从应用程序域模型的实体中选择。 语法 选择查询的整体形式如下: SELECT <sel…

【操作系统1】一篇文章便可入门操作系统

操作系统 (Operating System,OS)是一种系统软件&#xff0c;它负责管理计算机的硬件和软件资源。它的主要任务是组织和调度计算机的工作&#xff0c;并分配资源给用户和其他软件。操作系统为用户和软件提供了方便的接口和环境。它是计算机系统中最基本的软件之一。 一、操作系…

μC/OS-Ⅱ源码学习(6)---事件标志组

快速回顾 μC/OS-Ⅱ中的多任务 μC/OS-Ⅱ源码学习(1)---多任务系统的实现 μC/OS-Ⅱ源码学习(2)---多任务系统的实现(下) μC/OS-Ⅱ源码学习(3)---事件模型 μC/OS-Ⅱ源码学习(4)---信号量 μC/OS-Ⅱ源码学习(5)---消息队列 本文进一步解析事件模型中&#xff0c;事件标志…

【经验分享】OpenHarmony5.0.0-release编译RK3568不过问题(已解决)

问题描述 根据操作手册正常拉取代码&#xff0c;然后编译OpenHarmony5.0.0版本rk3568项目 编译命令 ./build.sh --product-name rk3568 --ccache出现如下报错 然后真正开始出错的位置是下面这句log FAILED: ../kernel/src_tmp/linux-5.10/boot_linux ../kernel/checkpoint/c…

C++重点和练习-----多态

rpg.cpp: #include <iostream>using namespace std;/*模拟一个游戏场景有一个英雄&#xff1a;初始所有属性为1atk,def,apd,hp游戏当中有以下3种武器长剑Sword&#xff1a; 装备该武器获得 1atx&#xff0c;1def短剑Blade&#xff1a; 装备该武器获得 1atk&#xff0c;1…

Qt之点击鼠标右键创建菜单栏使用(六)

Qt开发 系列文章 - menu&#xff08;六&#xff09; 目录 前言 一、示例演示 二、菜单栏 1.MenuBar 2.Menu 总结 前言 QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏&#xff08;menubar&#xff09;、多个工具栏(toolbars)、一个状态栏(status…

天猫魔盒M17/M17S_超级UI 线刷固件包-可救砖(刷机取消双勾)

在智能电视盒子的领域中&#xff0c;天猫魔盒 M17 以其独特魅力占据一席之地&#xff0c;然而&#xff0c;原厂设置有时难以满足进阶用户的多元需求。此刻&#xff0c;刷机成为开启全新体验的关键钥匙&#xff0c;为您的盒子注入鲜活能量。 一、卓越固件特性概览 此款精心打造的…

Elasticsearch 7.x入门学习-Spring Data Elasticsearch框架

1 Spring Data框架 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷&#xff0c;并支持 map-reduce 框架和云计算数据服务。 Spring Data 可以极大的简化 JPA的写法&#xff0c;…

【落羽的落羽 C语言篇】一些常见的字符函数、字符串函数、内存函数

文章目录 一、字符函数1. 字符分类函数2. 字符转换函数 二、字符串函数1. strlen的使用和模拟实现使用模拟实现 2. strcpy的使用和模拟实现使用模拟实现 3. strcat的使用和模拟实现使用模拟实现 4. strcmp的使用和模拟实现使用模拟实现 5. strncpy的使用6. strncat的使用7. str…

JAVA:访问者模式(Visitor Pattern)的技术指南

1、简述 访问者模式(Visitor Pattern)是一种行为型设计模式,允许你将操作分离到不同的对象中,而无需修改对象本身的结构。这种模式特别适合复杂对象结构中对其元素进行操作的场景。 本文将介绍访问者模式的核心概念、优缺点,并通过详细代码示例展示如何在实际应用中实现…

小米自研系统Vela全面开源:开启物联网新时代的技术革新之旅

目录 Vela系统的技术特点 1. 高性能与低功耗的完美平衡 2. 高度可扩展性与模块化设计 3. 强大的安全机制 4. 跨平台兼容性 Vela系统的应用场景 1. 智能家居领域 2. 工业物联网领域 3. 医疗健康领域 4. 智慧城市领域 Vela系统的深远影响 1. 推动物联…

Linux/CentOS编译TensorFlow

很多时候为了方便图省事&#xff0c;是通过pip安装TensorFlow的&#xff0c;然而很不幸运行的服务器不支持AVX指令&#xff0c;引入模块的时候会报错&#xff1a; The TensorFlow library was compiled to use AVX instructions, but these aren’t available on your machine.…

2021陇剑杯——流量分析

JWT简介 JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应用环境中以一种紧凑的、URL安全的方式传递声明&#xff08;Claims&#xff09;。JWT通常用于身份验证、信息交换以及验证消息的完整性。JWT通过在不…

visual studio 2022 c++使用教程

介绍 c开发windows一般都是visual studio&#xff0c;linux一般是vscode&#xff0c;但vscode调试c不方便&#xff0c;所以很多情况都是2套代码&#xff0c;在windows上用vs开发方便&#xff0c;在转到linux。 安装 1、官网下载vs2022企业版–选择桌面开发–安装位置–安装–…

Grafana配置告警规则推送企微机器人服务器资源告警

前提 已经部署Grafana&#xff0c;并且dashboard接入数据 大屏编号地址&#xff1a;Node Exporter Full | Grafana Labs 创建企微机器人 备注&#xff1a;群里若有第三方外部人员不能创建 机器人创建完成&#xff0c;记录下来Webhook地址 Grafana配置告警消息模板 {{ define &…