【Python】字符串处理技巧大揭秘:从基础到高级

欢迎来CILMY23的博客

本篇主题为 字符串处理技巧大揭秘:从基础到高级

个人主页:CILMY23-CSDN博客

Python系列专栏:http://t.csdnimg.cn/HqYo8

上一篇博客: http://t.csdnimg.cn/5NRlT

C语言专栏: http://t.csdnimg.cn/hQ5a9

感谢观看,支持的可以给个一键三连,点赞关注+收藏。


本文目录

一、字符串类型

1.1 什么是字符串类型 

1.2 字符串类型转换 

二、字符串操作

2.1 创建字符串

2.1.1 使用赋值运算符创建

2.1.2 使用str()或repr()

2.2 字符串访问

2.2.1 通过索引访问

2.2.2 通过切片访问

2.2.3 通过字符串名访问

2.3 字符串运算

2.3.1 字符串连接 

2.3.2 重复打印字符串 

2.3.3 in和not in 

2.3.4 关系运算符比较字符串

三、字符串函数 

3.1 字符串查找

3.1.1 find()和rfind()

3.1.2 index()和rindex()

3.1.3 count()

3.1.4 startswith() 和 endswith()

3.2 字符串替换

3.3 字符串拆分

3.4 字符和ASCII码转换

3.5 字符串长度

3.6 字符串大小写转换

3.7 字符串去除空白

3.8 判断字符串函数

3.9 join()合并字符串 

四、转义字符


本文前言

 在初步认识了数据类型后,本期我们将详细介绍python中字符串函数的用法,以及字符串的操作。


一、字符串类型

1.1 什么是字符串类型 

在上一篇中,我们讲解了什么是字符串,字符串作为组合数据,是一种在编程语言中用来表示文本数据的数据类型。字符串是一系列字符的序列,可以包含字母、数字、特殊字符和空格等。字符串可以使用单引号(')或双引号(")来表示,python还允许使用三引号(''')或('''''')创建跨多行的字符串,这种字符串中可以换行符、制表符及其他特殊字符,所以其实之前的注释本质上还是个字符串。

 在Python中,支持如下几种类型的字符串。

  1. 普通字符串:在Python中用单引号(')或双引号(")括起来的字符串,例如:'Hello World'"Python is awesome"

  2. 多行字符串:可以使用三个单引号(''')或三个双引号(""")来定义多行字符串,适合于包含换行符的长字符串,例如:

    '''
    This is a 
    multiline
    string
    '''
    
  3. 原始字符串:使用前缀rR来定义原始字符串,原始字符串中的转义字符不会生效,适合处理正则表达式等场景,例如:r'C:\Users\'。(常用来指示路径)

  4. 格式化字符串:通过在字符串前加fF来定义格式化字符串,可以在字符串中使用表达式和变量,(常用于printf的输出)例如:

    name = 'Alice'
    age = 30
    formatted_string = f'My name is {name} and I am {age} years old.'
    
  5. 字节字符串(bytes字节串):使用前缀bB定义字节字符串,字节字符串是以字节(而不是Unicode字符)为单位的字符串,适合处理二进制数据,例如:b'hello'

  6. Unicode字符串:Python 3中,普通字符串就是Unicode字符串,因此可以直接处理Unicode字符,无需额外声明类型。

1.2 字符串类型转换 

 在之前我们说类型转换的函数是用python自带的encode()函数和decode()函数,除了可以用这两个以外还可以用str()函数和bytes()函数进行转换。

str()    函数:用于将对象转换为字符串。如果给定的对象是字节字符串,则会使用默认编码(通常是 UTF-8)将其解码为字符串。

bytes()函数:用于将对象转换为字节字符串。如果给定的对象是字符串,则会使用默认编码(通常是 UTF-8)将其编码为字节字符串。

例如:

bytes_data = b'Hello'
string_data = str(bytes_data, encoding='utf-8')  # 将字节字符串解码为字符串
string_data = 'Hello'
bytes_data = bytes(string_data, encoding='utf-8')  # 将字符串编码为字节字符串

 虽然 encode() 和 decode() 函数在某些情况下也可以用于字符串和字节字符串之间的转换,但它们的主要目的是处理各种数据类型的转换,并不如str()和bytes()方法那样专注于字符串和字节字符串之间的相互转换。因此,推荐在处理字符串类型的转换更适用于str()和bytes()。

二、字符串操作

2.1 创建字符串

 在创建字符串的时候我们可以用 赋值运算符 = 来创建一个字符串,也可以使用str() 或 repr() 函数来创建字符串。

2.1.1 使用赋值运算符创建

这里是换种说法,实际上就是用单引号,双引号,三引号来创建一个字符串

# 2.1 使用赋值运算符创建
str1 = 'hello str1'
str2 = "hello world str2"
str3 = """ 
hello
world
str3
"""
str4 = '''
hello 
world
str4
'''
print(str1, end=' ')
print(str2, end=' ')
print(str3, end=' ')
print(str4, end=' ')

在这里我们在print中使用一个end参数来连接各种输出,取消末尾的换行,因为空格不明显,所以我们可以把空格换成‘-’

结果如下:

2.1.2 使用str()或repr()

 str() 或 repr() 函数的功能是将一个给定对象转换为字符串,其一般格式为: str(obj) 或 repr(obj) 

其中,obj 为要转换的对象, repr()的用途更为广泛,可以将任何Python对象转换成为字符串对象

例如:

# 2.2 使用str() 或 repr()
print(str(8.42))
print(str(True))
print(str([4, 2, 9, 8]))num = 42
repr_num = repr(num)
print(repr_num)

2.2 字符串访问

 在Python中,访问字符串方式有以下三种

2.2.1 通过索引访问

Python为字符串中的每个字符分配一个数字来指代这个元素的位置,即索引。第一个元素的索引是0,第二个元素的索引是1。(有点类似C语言中的下标),同时,字符串还支持反向索引,字符串中最后一个字符的索引是-1,倒数第二个字符的索引是-2……

 例如:

my_str = "CILMY23"
print(str[0])
print(str[-1])

2.2.2 通过切片访问

切片访问是指通过指定起始索引和结束索引来获取字符串中的子串的操作。Python中可以使用

str[start:end:step]的语法来实现字符串的切片访问。其中,start表示起始索引(包含),end表示结束索引(不包含),step是步长默认值是1.当三个参数都没有时,为整个字符串。

注意:

1.  不包含结束位置下标对应的数据,正负整数均可。

2.  步长是选取间隔,正负整数均可,默认步长为1。

# 2.2.2 切片
my_str = "CILMY23"
print(my_str[2:5])
print(my_str[:])
print(my_str[2:5:2])
print(my_str[-1:-3:-1])
print(my_str[::-1]) # 旋转输出字符串
print(my_str[-1:-3:-2])
print(my_str[-1:-3:1])

结果如下:

特别注意,三个参数要么都为正数,要么都为负数,否则无法打印。 

2.2.3 通过字符串名访问

 我们可以使用一个循环(看不懂也没事,之后会单独讲解)来打印一个字符串

my_str = "CILMY23"
for char in my_str:print(char)

结果如下:

2.3 字符串运算

操作符功能
+字符串连接
*重复输出字符串
关系运算符按两个字符串的索引位置依次比较
in如果字符串中包含给定的字符,则返回True;否则返回False
not in如果字符串中不包含给定的字符,则返回True;否则返回False

2.3.1 字符串连接 

str1 = "CI"
str2 = "LMY"
str3 = "23"
connect_str = str1 + str2 + str3
print(connect_str)

 结果如下:

注意,字符串的连接左右两边必须都为字符串,否则就会报错 

2.3.2 重复打印字符串 

# 2.3 字符串运算
str1 = "CI"
str2 = "LMY"
str3 = "23"
connect_str = str1 + str2 + str3
print(connect_str)
print(connect_str * 3)

结果如下:

2.3.3 in和not in 

in 和not in是 Python 中用于检查一个字符是否存在于字符串中的成员运算符。

  • in:如果目标字符存在于字符串中,则返回 True,否则返回 False。
  • not in:如果目标字符不存在于字符串中,则返回 True,否则返回 False。

 例如:

my_str = "CILMY23"
str1 = "CI"
str2 = "LMY"
str3 = "23"
str4 = "12"
# 使用 in 运算符检查子串是否存在
print(str1 in my_str)
print(str2 in my_str)# 使用 not in 运算符检查子串是否不存在
print(str1 not in my_str)
print(str4 not in my_str)

结果如下:

2.3.4 关系运算符比较字符串

在Python中,可以使用关系运算符来比较字符串的大小或相等性。以下是常用的关系运算符:

  1. 等于运算符 (==): 检查两个字符串是否相等,如果相等则返回True,否则返回False。

  2. 不等于运算符 (!=): 检查两个字符串是否不相等,如果不相等则返回True,否则返回False。

  3. 大于运算符 (>): 检查第一个字符串是否大于第二个字符串,如果是则返回True,否则返回False。

  4. 小于运算符 (<): 检查第一个字符串是否小于第二个字符串,如果是则返回True,否则返回False。

  5. 大于等于运算符 (>=): 检查第一个字符串是否大于等于第二个字符串,如果是则返回True,否则返回False。

  6. 小于等于运算符 (<=): 检查第一个字符串是否小于等于第二个字符串,如果是则返回True,否则返回False。

这些运算符用于比较字符串时会逐字符比较它们的 Unicode 值。如果字符串长度不同但有共同前缀,则较短的字符串被认为小于较长的字符串。例如,"apple" 小于 "banana"。

例如:

str1 = "apple"
str2 = "banana"print(str1 == str2)  # 输出: False
print(str1 != str2)  # 输出: True
print(str1 < str2)   # 输出: True
print(str1 > str2)   # 输出: False
print(str1 <= str2)  # 输出: True
print(str1 >= str2)  # 输出: False

两个字符串的比较一般遵循以下规则:

(1)如果都是西文字符串,则按照字符串每个字符的ASCII编码逐个进行比较

(2)如果都是中文字符串,则按照汉字的Unicode编码逐个进行比较

(3)如果分别是汉字字符串和英文字符串,则统一按照它们的Unicode编码逐个进行比较,一般都是汉字字符串大于英文字符串 

三、字符串函数 

3.1 字符串查找

在python中,字符串的查找通常有以下字符串函数 

3.1.1 find()和rfind()

  • find(sub, start, end) 从左向右搜索子串 sub,并返回第一次出现的索引。如果未找到子串,则返回 -1。参数 start 和 end 可以指定搜索的起始和结束位置,默认为整个字符串。

  • rfind(sub, start, end) 从右向左搜索子串 sub,并返回最后一次出现的索引。如果未找到子串,则返回 -1。参数 start 和 end 可以指定搜索的起始和结束位置,默认为整个字符串。

 例如:

# 3.1.1 find()和rfind()
string = "hello, hello, world!"# 使用 find() 方法查找子字符串 "hello"
index1 = string.find("hello") # 使用 rfind() 方法查找子字符串 "hello"
index2 = string.rfind("hello") # 使用 find() 方法查找不存在的子字符串 "python"
index3 = string.find("python")  # 使用 rfind() 方法查找不存在的子字符串 "python"
index4 = string.rfind("python") print(index1,index2,index3,index4)

 结果如下:

3.1.2 index()和rindex()

index()和rindex()与find()和rfind()方法类似,都是用于在字符串中查找子串并返回其索引。它们的区别在于当子串不存在时的处理方式,后者是返回-1,而前者会直接报错。

  • index(sub, start, end) 从左向右搜索子串 sub,并返回第一次出现的索引。如果未找到子串,则报错。参数 start 和 end 可以指定搜索的起始和结束位置,默认为整个字符串。

  • rindex(sub, start, end) 从右向左搜索子串 sub,并返回最后一次出现的索引。如果未找到子串,则报错。参数 start 和 end 可以指定搜索的起始和结束位置,默认为整个字符串。

 例如:

# 3.1.2 index()和rindex()
string = "hello, hello, world!"# 使用 find() 方法查找子字符串 "hello"
index1 = string.index("hello")# 使用 rfind() 方法查找子字符串 "hello"
index2 = string.rindex("hello")# 使用 find()和rfind 方法查找不存在的子字符串 "python"
#index3 = string.index("python")
#index4 = string.rindex("python")print(index1, index2)

例如:

3.1.3 count()

count()字符串函数用于统计字符串中某个子串出现的次数,并返回结果。.

语法:

str.count(sub, start, end)
  • sub:要搜索的子串。
  • start:搜索的起始位置(包含),默认为0。
  • end:搜索的结束位置(不包含),默认为字符串的长度。

例如: 

my_string = "Hello, World, Hello"
print(my_string.count("Hello"))  

 结果如下:

3.1.4 startswith() 和 endswith()

startswith() 和endswith() 用于检查字符串是否以指定的前缀或后缀开头或结尾。它们的语法如下:

  • startswith(prefix, start, end) 检查字符串是否以指定的 prefix 开头。如果是,则返回  True ;否则返回False。参数 start 和 end 指定搜索的起始和结束位置,默认为整个字符串。

  • endswith(suffix, start, end) 检查字符串是否以指定的 suffix 结尾。如果是,则返回  True ;否则返回False。参数 start 和 end 指定搜索的起始和结束位置,默认为整个字符串。

例如:

my_string = "Hello, World"# 检查是否以指定的前缀开头
print(my_string.startswith("Hello"))  # 输出: True
print(my_string.startswith("World"))  # 输出: False# 检查是否以指定的后缀结尾
print(my_string.endswith("World"))    # 输出: True
print(my_string.endswith("Hello"))    # 输出: False

3.2 字符串替换

 python提供了replace()函数,其功能是把字符串中的旧字符串替换成新字符串

replace(oldStr,newStr,max)
  • old:要被替换的子串。
  • new:用于替换的新子串。
  • max(可选):指定替换的最大次数,如果不指定,则全部替换。

该方法返回一个新的字符串,原始字符串不会被修改。

例如:

s = "Hello, World and up and good and Python and and aaaa and"
start = 0
count = s.count("and")
print(count)s1 = s.replace("and", "ands", count)
print(s1)

结果如下:

3.3 字符串拆分

 python提供一个split()函数,通过指定分隔符对字符串进行切片,返回一个字符串列表。

语法:

split(sep='', num)
  • sep(可选):指定分隔符,默认为 None,表示使用空白字符(空格、换行符等)作为分隔符进行分割。
  • num(可选):指定分割次数。如果指定了该参数,则最多分割 num次;未指定或者为 -1,则进行所有可能的分割。

该方法返回一个包含分割后子串的列表。

 例如:

s = "Hello, World and up and good and Python and and aaaa and"
words = s.split(sep=" ")
print(words)  

结果如下:

3.4 字符和ASCII码转换

ord() 和 chr() 是 Python 内置函数,用于字符和对应的 ASCII 码之间的转换。

  • ord(character):接受一个字符作为参数,返回对应的 ASCII 码值。
  • chr(number):接受一个整数作为参数,返回对应 ASCII 码值的字符。
# 使用 ord() 将字符转换为 ASCII 码值
print(ord('A'))  # 输出: 65
print(ord('a'))  # 输出: 97# 使用 chr() 将 ASCII 码值转换为字符
print(chr(65))   # 输出: 'A'
print(chr(97))   # 输出: 'a'

结果如下:

 

3.5 字符串长度

 python提供了len()函数来计算字符串的长度

例如: 

字符串 "Hello, World!" 中包含了13个字符(包括逗号和空格)

my_string = "Hello, World!"
length = len(my_string)
print(length) 

结果如下: 

 

3.6 字符串大小写转换

python提供了以下函数用于处理字符串的大小写转换 

  1. str.upper() 将字符串中的所有字符转换为大写形式,并返回转换后的新字符串。
  2. str.lower() 将字符串中的所有字符转换为小写形式,并返回转换后的新字符串。
  3. str.capitalize() 将字符串的第一个字符转换为大写,其余字符转换为小写,并返回转换后的新字符串。
  4. str.title() 将字符串中每个单词的首字母转换为大写,其余字母转换为小写,并返回转换后的新字符串。
  5. str.swapcase()将字符串中的大小写字母互换,即将字符串中的大写字母转换为小写,小写字母转换为大写,并返回转换后的新字符串。

例如:

# 3.6 字符串大小写转换
my_string = "hello, world! HELLO \t"
upper_str = my_string.upper()
lower_str = my_string.lower()
capitalize_str = my_string.capitalize()
title_str = my_string.title()
swap_str = my_string.swapcase()print(upper_str,lower_str,capitalize_str,title_str)
print(swap_str)

结果如下:

3.7 字符串去除空白

字符串去除空白是指将字符串中的空白字符(如空格、制表符、换行符等)从字符串的开头和结尾去除。在 Python 中,可以使用以下方法进行字符串去除空白操作:

  1. str.strip() 去除字符串开头和结尾的空白字符,并返回去除后的新字符串。
  2. str.lstrip() 去除字符串开头的空白字符,并返回去除后的新字符串。
  3. str.rstrip() 去除字符串结尾的空白字符,并返回去除后的新字符串。

例如: 

my_string = "   hello, world!   "
strip_str = my_string.strip()
left_strip_str = my_string.lstrip()
right_strip_str = my_string.rstrip()print(strip_str, '\n', left_strip_str, '\n', right_strip_str)

结果如下:

 

3.8 判断字符串函数

 由于这里判断字符串函数比较多就不举例子了,我们列个常用的字符表格,注意大多数字符串都至少有一个字符

函数功能
isalpha()

 用于检查字符串是否只包含字母,并且至少有一个字符。

是那么返回True,否则返回False

isspace()

用于检查字符串是否只包含空白字符,并且至少有一个字符。

是那么返回True,否则返回False

isdecimal()

检查字符串是否只包含十进制字符,并且至少有一个字符,

是那么返回True,否则返回False

isdigit()

用于检查字符串是否只包含数字,并且至少有一个字符,

是那么返回True,否则返回False

islower()

用于检查字符串是否只包含小写字符

是那么返回True,否则返回False

isupper()

用于检查字符串是否只包含大写字符

是那么返回True,否则返回False

isalnum()

用于检查字符串是否只包含字母和数字,并且至少有一个字符

是那么返回True,否则返回False

3.9 join()合并字符串 

 join用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串。

例如:

my_list = ["apple", "banana", "cherry"]
separator = ", "
result = separator.join(my_list)
print(result)

结果如下:

四、转义字符

转义字符就是特殊用法的字符,在这里我们列个表格看,可以动手实操以下的转义字符

转义字符描述转义字符描述
\续行符(在行尾巴时)\n换行
\\反斜杠符号\v纵向制表符
\'单引号\t横向制表符
\''双引号\r回车
\a响铃\f换页
\退格(Backspace)\oyy八进制数,yy代表的字符
\e转义\xyy十六进制,yy代表的字符
\000\other其他字符以普通格式输出

 感谢各位同伴的支持,本期python就讲解到这啦,如果你觉得写的不错的话,可以给个一键三连,点赞,关注+收藏,若有不足,欢迎各位在评论区讨论。       

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

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

相关文章

虚幻UE5智慧城市全流程开发教学

一、背景 这几年&#xff0c;智慧城市/智慧交通/智慧水利等飞速发展&#xff0c;骑士特意为大家做了一个这块的学习路线。 二、这是学习大纲 1.给虚幻UE5初学者准备的智慧城市/数字孪生蓝图开发教程 https://www.bilibili.com/video/BV1894y1u78G 2.UE5数字孪生蓝图开发教学…

Docker 安装 Linux 系统可视化监控 Netdata

docker 安装 netdata 前提准备Docker 两种方式部署 Netdata1、使用 docker run 命令运行 netdata 服务2、使用 docker compose 运行 netdata 服务 Netdata 服务可视化界面Netdata 汉化处理 前提准备 说明&#xff1a;此处使用 windows11 安装的 docker desktop & wsl2/apli…

linux E: You don‘t have enough free space in /var/cache/apt/archives/. 空间不足

问题&#xff1a; 在ubuntu的亚马逊云计算机平台上&#xff0c;apt install的时候&#xff0c;报错&#xff0c;空间不足 解决方法&#xff1a; 查看磁盘情况&#xff1a; 设置自动清理&#xff1a; sudo apt-get autoclean sudo apt-get clean 解决&#xff1a;

RabbitMQ3.13.x之十_流过滤的内部结构设计与实现

RabbitMQ3.13.x之十_流过滤的内部结构设计与实现 文章目录 RabbitMQ3.13.x之十_流过滤的内部结构设计与实现1. 概念1. 消息发布2. 消息消费 2. 流的结构1. 在代理端进行过滤2. 客户端筛选3. JavaAPI示例4. 流过滤配置5. AMQP上的流过滤6. 总结 3. 相关链接 1. 概念 流过滤的思…

前端与后端协同:实现Excel导入导出功能

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

RISC-V GNU Toolchain 工具链安装问题解决(含 stdio.h 问题解决)

我的安装过程主要参照 riscv-collab/riscv-gnu-toolchain 的官方 Readme 和这位佬的博客&#xff1a;RSIC-V工具链介绍及其安装教程 - 风正豪 &#xff08;大佬的博客写的非常详细&#xff0c;唯一不足就是 sudo make linux -jxx 是全部小写。&#xff09; 工具链前前后后我装了…

非关系型数据库--------------------Redis 群集模式

目录 一、集群原理 二、集群的作用 &#xff08;1&#xff09;数据分区 &#xff08;2&#xff09;高可用 Redis集群的作用和优势 三、Redis集群的数据分片 四、Redis集群的工作原理 五、搭建redis群集模式 5.1启用脚本配置集群 5.2修改集群配置 5.3启动redis节点 5…

Django--admin 后台管理站点

Django最大的优点之一&#xff0c;就是体贴的提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用&#xff0c;并不对大众开放。虽然admin的界面可能不是那么美观&#xff0c;功能不是那么强大&#xff0c;内容不一定符合你的要求&#xff0c;但是…

dm8 备份与恢复

dm8 备份与恢复 基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 设置bak_path路径 --创建备份文件存放目录 su - dmdba mkdir -p /dm8/backup--修改dm.ini 文件…

非关系型数据库——Redis基本操作

目录 一、Redis数据库常用命令 1.Set——存放数据 2.Get——获取数据 3.Keys——获取符合条件的键值 4.Exists——判断键值是否存在 5.Del——删除指定键值 6.Type——获取键值对应的类型 7.Rename——对已有键值重命名&#xff08;覆盖&#xff09; 8.Renamenx——对…

【蓝桥杯嵌入式】13届程序题刷题记录及反思

一、题目分析 考察内容&#xff1a; led按键&#xff08;短按&#xff09;PWM输出&#xff08;PA1&#xff09;串口接收lcd显示 根据PWM输出占空比调节&#xff0c;高频与低频切换 串口接收&#xff08;指令解析&#xff09;【中断接收】 2个显示界面 led灯闪烁定时器 二…

SV学习笔记(六)

覆盖率类型 写在前面 覆盖率是 衡量设计验证完备性 的一个通用词。随着测试逐步覆盖各种合理的场景&#xff0c;仿真过程会慢慢勾画出你的设计情况。覆盖率工具会 在仿真过程中收集信息 &#xff0c;然后进行后续处理并且得到覆盖率报告。通过这个报告找出覆盖之外的盲区&…

动态属性的响应式问题和行内编辑的问题

动态属性的响应式问题 通过点击给目标添加动态数据&#xff0c;该数据不具备响应式特性 如下图&#xff1a; 点击编辑&#xff0c;前面的数据框会变成输入框&#xff0c;点取消会消失 // 获取数据 async getList () {const res await xxxthis.list res.data.rows// 1. 获…

【QT+QGIS跨平台编译】074:【libdxfrw跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、libdxfrw介绍二、QGIS下载三、文件分析四、pro文件五、编译实践一、libdxfrw介绍 libdxfrw是一个用于读取和写入DXF(Drawing Exchange Format)文件的开源C++库。DXF是一种由AutoCAD开发的文件格式,用于存储CAD(计算机辅助设计)图形数据,它…

使用 LLMLingua-2 压缩 GPT-4 和 Claude 提示

原文地址&#xff1a;Compress GPT-4 and Claude prompts with LLMLingua-2 2024 年 4 月 1 日 向大型语言模型&#xff08;LLM&#xff09;发送的提示长度越短&#xff0c;推理速度就会越快&#xff0c;成本也会越低。因此&#xff0c;提示压缩已经成为LLM研究的热门领域。 …

ensp华为AC+AP上线配置

AR1配置&#xff1a; <Huawei>system-view # 进入系统视图<Huawei>sysname R1 # 设备重命名[R1]dhcp enable # 开启DHCP功能[R1]interface GigabitEthernet0/0/0 # 进入接口 [R1-GigabitEthernet0/0/0]ip address 192.168.0.1 23 # 配置接口地址 [R1-GigabitE…

SpringBoot配置文件加载的优先级顺序

SpringBoot配置文件加载的优先级顺序 1.按文件类型2.按路径比较3.按命令行参数设置 1.按文件类型 SpringBoot的配置文件可以分为.properties .yml .yaml 在同一路径下&#xff08;比如都在classpath下&#xff09;三者的优先级顺序是.properties> .yml> .yaml 2.按路径…

基于tensorflow和kereas的孪生网络推理图片相似性

一、环境搭建 基础环境&#xff1a;cuda 11.2 python3.8.13 linux ubuntu18.04 pip install tensorflow-gpu2.11.0 验证&#xff1a;# 查看tensorflow版本 import tensorflow as tf tf.__version__ # 是否能够成功启动GPU from tensorflow.python.client import device_lib pr…

jvm基础三——类加载器

类加载器 在Java中&#xff0c;类加载器&#xff08;Class Loader&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的一部分&#xff0c;负责将类文件&#xff08;.class文件&#xff09;加载到JVM中&#xff0c;使得程序能够使用这些类。类加载器在Java中具有重要的作用&…

6 种事件驱动的架构模式

事件驱动架构(Event-Driven Architecture)是一种基于事件和事件处理的软件架构&#xff0c;它的核心思想是将系统的行为和逻辑抽象成一系列事件&#xff0c;这些事件在系统中按照一定的规则和顺序产生和传播&#xff0c;并被相应的处理器处理。事件驱动架构具有高度的灵活性、可…