技术标签: python 笔记 字符串 pycharm 字符串函数 开发语言 转义字符
欢迎来CILMY23的博客
本篇主题为 字符串处理技巧大揭秘:从基础到高级
个人主页:CILMY23-程序员宅基地
Python系列专栏:http://t.csdnimg.cn/HqYo8
上一篇博客: http://t.csdnimg.cn/5NRlT
C语言专栏: http://t.csdnimg.cn/hQ5a9
感谢观看,支持的可以给个一键三连,点赞关注+收藏。
本文目录
3.1.4 startswith() 和 endswith()
本文前言
在初步认识了数据类型后,本期我们将详细介绍python中字符串函数的用法,以及字符串的操作。
在上一篇中,我们讲解了什么是字符串,字符串作为组合数据,是一种在编程语言中用来表示文本数据的数据类型。字符串是一系列字符的序列,可以包含字母、数字、特殊字符和空格等。字符串可以使用单引号(')或双引号(")来表示,python还允许使用三引号(''')或('''''')创建跨多行的字符串,这种字符串中可以换行符、制表符及其他特殊字符,所以其实之前的注释本质上还是个字符串。
在Python中,支持如下几种类型的字符串。
普通字符串:在Python中用单引号(
'
)或双引号("
)括起来的字符串,例如:'Hello World'
或"Python is awesome"
。多行字符串:可以使用三个单引号(
'''
)或三个双引号("""
)来定义多行字符串,适合于包含换行符的长字符串,例如:''' This is a multiline string '''
原始字符串:使用前缀
r
或R
来定义原始字符串,原始字符串中的转义字符不会生效,适合处理正则表达式等场景,例如:r'C:\Users\'
。(常用来指示路径)格式化字符串:通过在字符串前加
f
或F
来定义格式化字符串,可以在字符串中使用表达式和变量,(常用于printf的输出)例如:name = 'Alice' age = 30 formatted_string = f'My name is {name} and I am {age} years old.'
字节字符串(bytes字节串):使用前缀
b
或B
定义字节字符串,字节字符串是以字节(而不是Unicode字符)为单位的字符串,适合处理二进制数据,例如:b'hello'
。Unicode字符串:Python 3中,普通字符串就是Unicode字符串,因此可以直接处理Unicode字符,无需额外声明类型。
在之前我们说类型转换的函数是用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()。
在创建字符串的时候我们可以用 赋值运算符 = 来创建一个字符串,也可以使用str() 或 repr() 函数来创建字符串。
这里是换种说法,实际上就是用单引号,双引号,三引号来创建一个字符串
# 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参数来连接各种输出,取消末尾的换行,因为空格不明显,所以我们可以把空格换成‘-’
结果如下:
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)
在Python中,访问字符串方式有以下三种
Python为字符串中的每个字符分配一个数字来指代这个元素的位置,即索引。第一个元素的索引是0,第二个元素的索引是1。(有点类似C语言中的下标),同时,字符串还支持反向索引,字符串中最后一个字符的索引是-1,倒数第二个字符的索引是-2……
例如:
my_str = "CILMY23"
print(str[0])
print(str[-1])
切片访问是指通过指定起始索引和结束索引来获取字符串中的子串的操作。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])
结果如下:
特别注意,三个参数要么都为正数,要么都为负数,否则无法打印。
我们可以使用一个循环(看不懂也没事,之后会单独讲解)来打印一个字符串
my_str = "CILMY23"
for char in my_str:
print(char)
结果如下:
操作符 | 功能 |
+ | 字符串连接 |
* | 重复输出字符串 |
关系运算符 | 按两个字符串的索引位置依次比较 |
in | 如果字符串中包含给定的字符,则返回True;否则返回False |
not in | 如果字符串中不包含给定的字符,则返回True;否则返回False |
str1 = "CI"
str2 = "LMY"
str3 = "23"
connect_str = str1 + str2 + str3
print(connect_str)
结果如下:
注意,字符串的连接左右两边必须都为字符串,否则就会报错
# 2.3 字符串运算
str1 = "CI"
str2 = "LMY"
str3 = "23"
connect_str = str1 + str2 + str3
print(connect_str)
print(connect_str * 3)
结果如下:
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)
结果如下:
在Python中,可以使用关系运算符来比较字符串的大小或相等性。以下是常用的关系运算符:
等于运算符 (==): 检查两个字符串是否相等,如果相等则返回True,否则返回False。
不等于运算符 (!=): 检查两个字符串是否不相等,如果不相等则返回True,否则返回False。
大于运算符 (>): 检查第一个字符串是否大于第二个字符串,如果是则返回True,否则返回False。
小于运算符 (<): 检查第一个字符串是否小于第二个字符串,如果是则返回True,否则返回False。
大于等于运算符 (>=): 检查第一个字符串是否大于等于第二个字符串,如果是则返回True,否则返回False。
小于等于运算符 (<=): 检查第一个字符串是否小于等于第二个字符串,如果是则返回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编码逐个进行比较,一般都是汉字字符串大于英文字符串
在python中,字符串的查找通常有以下字符串函数
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)
结果如下:
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)
例如:
count()字符串函数用于统计字符串中某个子串出现的次数,并返回结果。.
语法:
str.count(sub, start, end)
- sub:要搜索的子串。
- start:搜索的起始位置(包含),默认为0。
- end:搜索的结束位置(不包含),默认为字符串的长度。
例如:
my_string = "Hello, World, Hello"
print(my_string.count("Hello"))
结果如下:
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
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)
结果如下:
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)
结果如下:
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'
结果如下:
python提供了len()函数来计算字符串的长度
例如:
字符串 "Hello, World!" 中包含了13个字符(包括逗号和空格)
my_string = "Hello, World!"
length = len(my_string)
print(length)
结果如下:
python提供了以下函数用于处理字符串的大小写转换
str.upper()
: 将字符串中的所有字符转换为大写形式,并返回转换后的新字符串。str.lower()
: 将字符串中的所有字符转换为小写形式,并返回转换后的新字符串。str.capitalize()
: 将字符串的第一个字符转换为大写,其余字符转换为小写,并返回转换后的新字符串。str.title()
: 将字符串中每个单词的首字母转换为大写,其余字母转换为小写,并返回转换后的新字符串。- 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)
结果如下:
字符串去除空白是指将字符串中的空白字符(如空格、制表符、换行符等)从字符串的开头和结尾去除。在 Python 中,可以使用以下方法进行字符串去除空白操作:
str.strip()
: 去除字符串开头和结尾的空白字符,并返回去除后的新字符串。str.lstrip()
: 去除字符串开头的空白字符,并返回去除后的新字符串。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)
结果如下:
由于这里判断字符串函数比较多就不举例子了,我们列个常用的字符表格,注意大多数字符串都至少有一个字符
函数 | 功能 |
isalpha() |
用于检查字符串是否只包含字母,并且至少有一个字符。 是那么返回True,否则返回False |
isspace() |
用于检查字符串是否只包含空白字符,并且至少有一个字符。 是那么返回True,否则返回False |
isdecimal() | 检查字符串是否只包含十进制字符,并且至少有一个字符, 是那么返回True,否则返回False |
isdigit() | 用于检查字符串是否只包含数字,并且至少有一个字符, 是那么返回True,否则返回False |
islower() | 用于检查字符串是否只包含小写字符 是那么返回True,否则返回False |
isupper() | 用于检查字符串是否只包含大写字符 是那么返回True,否则返回False |
isalnum() |
用于检查字符串是否只包含字母和数字,并且至少有一个字符 是那么返回True,否则返回False |
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就讲解到这啦,如果你觉得写的不错的话,可以给个一键三连,点赞,关注+收藏,若有不足,欢迎各位在评论区讨论。
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数