四:《Python基础语法汇总》— 字符串操作

简介: 本篇文章详细讲述了关于如何获取字符串中元素的操作(为了方便大家理解,着重讲述了下标索引与切片),及字符串的常用方法与函数和字符串的运算
  • ​ 字符串是Python中最基本的数据类型之一,是可以存放多个单个单一元素的容器
  • ​ 字符串是Python中序列的一种,是一个有序不可变序列
  • ​ 由于字符串是不可变的序列,所以无法对其里面的内容进行修改,只能在去重新开辟空间存储
1.下标(索引):
  • ​ Python会对容器中的元素进行编号,也就是下标(索引)
  • ​ 索引是指通过下标找到某一个元素
  • ​ 索引分为正向索引和负向索引:正向索引从左到右,以0为起始点;负向索引从右到左,以-1为起始点

用下标去获取元素,用索引符号 [] 去索引,对象/变量名[下标]

a = "longze"
#用负向索引获取元素e
print(a[-1])
#用正向索引获取元素n
print(a[2])
2.切片:
  • ​ 切片是指只截取一部分可操作的对象;字符串,列表,元组都支持切片操作
  • ​ 切片是指通过一段下标,找到某一段元素
  • ​ 凡需要获取的元素大于等于两位就都用切片
  • ​ 在切片中正向索引第三参数默认为1(可以省略),负向索引第三参数为-1(必须写)

用切片去获取某一段元素,用索引符号 [] 去索引,对象/变量名[起始下标:结束下标:正负向参数(步长)]

注意: 冒号 : 是一个范围符号,表示下标从某一个范围到某一个范围,冒号的左边是范围的起始,右边是指范围的结束(结束下标不包含其本身,结束下标=结束下标-1)

a = "longzeqiaoyue"
#用正整数正向索引获取g~y
print(a[3:11])
#用正整数负向索引获取y~g
print(a[10:2:-1])
#用负整数正向索引获取g~y
print(a[-10:-2])
#用负整数负向索引获取y~g
print(a[-3:-11:-1])

图示:
字符串操作.jpg

  • ​ 第三参数也为步长,也就是间隔
  • ​ 步长是选取间隔,正负整数均可,默认步长为1

len()函数:获取对象中元素的长度

a = "longze0313jiang0327qiaoyue2023"
#获取a中所有元素的长度
print(len(a))
#获取所有元素
print(a[:])
print(a[0:len(a)])
#获取奇数位上的所有元素
print(a[0:len(a):2])
#获取偶数位上的所有元素
print(a[1:len(a):2])
3.字符串的方法与函数:

​ 字符串的常用操作方法有查找,修改和判断三大类

​ 字符串方法的调用:对象/变量名.方法名()

一:查找

​ 字符串的查找方法即是查找子串在字符串中出现的位置或出现的次数

find()方法:通过指定的元素(当有重复元素出现时,只能找到第一次出现的元素)去查询与之对应的下标 (索引)值(从左往右查询),当find()方法查询到一个不存在的元素时,会返回一个数值-1

find()方法的语法格式:对象/变量名.find(想要查询的元素字符,起始点(刚才查询到的下标+1),结束位置)

a = "longzeo" 
#在此字符串中有两个o,但find()方法只能查询到从左往右第一次出现的o
print(a.find('o'))
#要想往右继续找重复出现的元素的下标(但也只找第一次出现的),可以在find()方法中设置起始参数和结束参数
print(a.find('o',2,len(a)))
print("longzeo".find('o',2,len("longzeo")))

rfind()方法:通过指定的元素(当有重复元素出现时,只能找到第一次出现的元素)去查询与之对应的下标(索引)值(从右往左查询,但下标值是从左往右正向索引的下标值),当rfind()方法查询到一个不存在的元素时,会返回一个数值-1

rfind()方法的语法格式:对象/变量名.rfind(想要查询的元素字符,结束位置,起始点(刚才查询到的下标-1))

a = "longzeo" 
#在此字符串中有两个o,但rfind()方法只能查询到从右往左第一次出现的o
print(a.rfind('o'))
#要想往左继续找重复出现的元素的下标(但也只找第一次出现的),可以在rfind()方法中设置起始参数和结束参数
print(a.rfind('o',0,5)
print("longzeo".find('o',0,5)

index()方法:通过指定的元素去查询下标,从左往右去找,与find()方法类似,唯一不同的是,当index()方法查询到一个不存在的元素时,会发生报错

rindex()方法:通过指定的元素去查询下标,从右往左去找,与rfind()方法类似,唯一不同的是,当index()方法查询到一个不存在的元素时,会发生报错

count()方法:用于统计指定的某个字符出现的次数

count()方法的语法格式:对象/变量名.count(想要查询的元素字符,起始点,结束位置)

a = "sdfyuiolkjgxcvbnklkjgf"
print(a.count('g'))
print(a.count('g',0,21))

二:修改

​ 对字符串中的内容进行修改

注意: 字符串本身是不可变类型,定义之后,无法被修改 ! ! !

replace()方法:将指定的字符替换成新的字符

replace()方法的语法格式:

对象/变量名.replace(要被替换的字符,要替换成为的新字符,count = -1)

count = -1指定的是替换的次数,默认值为-1,也就是在不设置这个参数的时候,就相当于替换全部,当第三参数超出了可替换的范围的时候,也相当于替换全部,是无用的,但不会报错

a = "woaini"
print(a.replace('ni','ziji'))
c = "asdfghjkiii"
#只把两个i替换成o
print(c.replace('i','o',2))

注意:

  1. a并没有真正意义上被替换,再次输出a时依旧是原字符串,replace()只是作为临时修改

  2. 要想使用被修改掉的临时字符串,只能重新的用变量去赋值

  3. 只要对字符串进行重新赋值,就相当于系统为其又开辟了一个空间,不在是原字符串

a = "woaini"
b = a.replace('ni','ziji')
print(b)

split()方法:

将字符串中的某个字符作为分割字符,将这个字符串分割成多个子字符串,最终的结果以列表的形式输出,用作指定的分割字符会自动转变为列表里的分割字符,也就是逗号;若作为分割字符的两个元素是挨着的,则都会变成空字符存储;当分割字符非字符串中的字符,则不发生任何改变,自动将这个字符串转换为列表输出

split()方法的语法格式:对象/变量名.split(指定的字符串里的字符)

a = "qeqtqyquiqo"
print(a.split('q'))
print(a.split('+++'))
b = "67899"
print(b.split('9'))
a = input("请输入个人信息,并用空格分开:").split()
#因为split()里面没有加入分割字符,当输入的个人信息有空格时,split()会自动把空格当做分割字符
print(a)

join()方法:把字符串/字符序列中每个元素按照指定的符号进行连接

join()方法的语法格式:分割字符(这里可以是任何字符).join(字符串/字符序列)

a = "qwert"#这里的每个字符都是单独的个体
print('+'.join(a))
b = ["qwe","567",a]#这里的每个元素都是单独的个体
print('@'.join(b))
c = ''.join("wer")#因为是空分割符,所以正常输出
print(c)
d = {
   
   "hj":"qwe","tyuiol":"567"}#当是字典时只会拼接键
print('@'.join(d))

注意:

  1. join()方法通常被用于字符串的拼接,与字符串相加所实现的效果是一样的,但join()方法会让拼接的效率更高

  2. join()方法不能拼接带数字的字符序列,只能是字符串

a = "tyu"+"hj"
print(a)

截取

lstrip()方法:去除字符串最左侧的空格

lstrip()方法的语法格式:对象/变量名.lstrip(chars)

chars参数默认情况下为None,也就是什么都没有,意思是去除的是空格,这个参数可以给它传入一个字符串对象中从最左侧开始连续的字符串,意思是把最左侧的什么什么给去除

a = "    ai love you"
print(a.lstrip())
print(a.lstrip("    ai"))

rstrip()方法:去除字符串最右侧的空格

rstrip()方法的语法格式:对象/变量名.rstrip(chars)

chars参数默认情况下为None,也就是什么都没有,意思是去除的是空格,这个参数可以给它传入一个字符串对象中从最右侧开始连续的字符串,意思是把最右侧的什么什么给去除

a = "ai love you    "
print(a.rstrip())
print(a.rstrip("you    "))

strip()方法:去除字符串左右侧的空格

strip()方法的语法格式:对象/变量名.strip(chars)

chars参数默认情况下为None,也就是什么都没有,意思是去除的是空格,这个参数可以给它传入一个字符串对象中从最左侧或最右侧开始的字符串,意思是同时去除左侧和右侧相匹配的字符串

a = "    ai love you    "
print(a.strip())
print(a.strip("    au"))

removeprefix()方法:允许指定将要删除的字符串前缀

removeprefix()方法的语法格式:对象/变量名.removeprefix(连续的字符串前缀)

a = "asdff mmm iofewp"
print(a.removeprefix("asd"))

removesuffix()方法:允许指定将要删除的字符串后缀

removesuffix()方法的语法格式:对象/变量名.removesuffix(连续的字符串后缀)

a = "asdff mmm iofewp"
print(a.removesuffix("wp"))

左中右对齐

ljust()方法:左对齐(填充右侧),并使用指定字符(默认空格)填充至对应长度的空字符串

ljust()方法的语法格式:对象/变量名.ljust(指定整个字符串的长度,指定字符填充对应长度(默认空格))

a = "我爱你"
print(a.ljust(8,'$'))

rjust()方法:右对齐(填充左侧),并使用指定字符(默认空格)填充至对应长度的空字符串

rjust()方法的语法格式:对象/变量名.rjust(指定整个字符串的长度,指定字符填充对应长度(默认空格))

a = "我爱你"
print(a.rjust(8,'$'))

center()方法:字符串居中(填充左右两侧),并使用指定字符(默认空格)填充至对应长度的空字符串

center()方法的语法格式:对象/变量名.center(指定整个字符串的长度,指定字符填充对应长度(默认空格))

a = "我爱你"
print(a.center(8,'$'))

zfill()方法:用0去填充左侧

zfill()方法的语法格式:对象/变量名.zfill(指定整个字符串的长度)

a = "我爱你"
print(a.zfill(8))

注意:

  1. zfill()方法在做数据报表的时候会比较实用

  2. zfill()方法也可以处理带负数的情况,它并不是一味的在左侧填充0,它会把负号挪到最左面去,当然负号也占一个字符

a = "-520"
print(a.zfill(5))

大小写转换

capitalize()方法:将字符串中的第一个字母变成大写

a = "aasdef qwer"
print(a.capitalize())

casefold()方法:返回一个所有字母都是小写的新字符串

a = "ASDFGH"
print(a.casefold())

title()方法:将字符串中的每个单词的首字母都变成大写,其余所有字母都变成小写

a = "SDF JKL asdf"
print(a.title())

upper()方法:将字符串中的所有字母都变成大写

a = "asdf jklo ASio"
print(a.upper())

lower()方法:将字符串中的所有字母都变成小写

a = "DFGHJ asKO"
print(a.lower())

swapcase()方法:将字符串中的所有字母大小写翻转,大写变小写,小写变大写

a = "ASDF Hijw"
print(a.swapcase())

注意: 空格之后的每一个单词都表示一个新的单词

三:判断

​ 判断方法的结果都是布尔值:正确返回True,错误返回False

startswith()方法:判断字符串是否以指定的子字符串为开头;也可指定一个范围去查找这个范围的起始字符

startswith()方法的语法格式:对象/变量名.startswith(指定的子字符串,起始点下标,结束下标)

a = "我爱你一生一世"
print(a.startswith("我爱"))
print(a.startswith("我",1,5))

endswith()方法:判断字符串是否以指定的子字符串为结尾;也可指定一个范围去查找这个范围的结尾字符

endswith()方法的语法格式:对象/变量名.endswith(指定的子字符串,起始点下标,结束下标)

a = "我爱你一生一世"
print(a.endswith("世"))
print(a.endswith("一世",3,6))

istitle()方法:判断一个字符串中所有单词是否都是以大写字母开头,其余字母都是小写

istitle()方法的语法格式:对象/变量名.istitle()

a = "lOve YOU"
print(a.istitle())

isupper()方法:判断一个字符串中是否所有字母都是大写字母

isupper()方法的语法格式:对象/变量名.isupper()

a = "lOve YOU"
print(a.isupper())

islower()方法:判断一个字符串中是否所有字母都是小写字母

islower()方法的语法格式:对象/变量名.islower()

a = "love you"
print(a.islower())

isalpha()方法:判断一个字符串中是否只有字母构成(中间有空格也算False)

isalpha()方法的语法格式:对象/变量名.isalpha()

a = "loveyou"
print(a.isalpha())

isspace()方法:判断是否为一个空白字符串(并不是只有空格才算空白字符串,例如:tab,转义字符\n也都是空白字符串

isspace()方法的语法格式:对象/变量名.isspace()

print("\n".isspace())

isprintable()方法:判断一个字符串中是否所有字符都是可打印的,例如:转义字符\n并不是一个可打印字符

isprintable()方法的语法格式:对象/变量名.isprintable()

a = "fwcww\n"
print(a.isprintable())

isdigit()方法:可以用来判断一个字符串中是否是纯数字,只可用来判断单一的数字

isdigit()方法的语法格式:对象/变量名.isdigit()

a = "12345"
print(a.isdigit())

isalnum()方法:判断一个字符串中是否是字母或数字

isalnum()方法的语法格式:对象/变量名.isalnum()

a = "123asd45"
print(a.isalnum())
4.字符串的运算:
符号 描述
+ 字符串的拼接
[] 通过索引获取到字符串中的字符
[:] 切片,获取到一段字符串
in 成员运算符 -- 如果字符串中包含给定的字符返回True
not in 成员运算符 -- 如果字符串中不包含给定的字符返回True
r 取消转义
% 格式化字符串
#给定的字符 in 字符串(对象)/变量名
a = "qwert"
print('t' in a)
#给定的字符 not in 字符串(对象)/变量名
print('q' not in "rtyuigh")
#取消转义
print(r"hello\nya")
目录
相关文章
|
23天前
|
Python
在 Python 中,如何将日期时间类型转换为字符串?
在 Python 中,如何将日期时间类型转换为字符串?
119 64
|
4月前
|
存储 算法 数据库
使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
`hashlib` 是 Python 中用于实现哈希功能的模块,它可以将任意长度的输入通过哈希算法转换为固定长度的输出,即散列值。该模块主要用于字符串加密,例如将用户名和密码转换为不可逆的散列值存储,从而提高安全性。`hashlib` 提供了多种哈希算法,如 `md5`、`sha1`、`sha256` 等。
68 1
|
15天前
|
存储 测试技术 Python
Python 中别再用 ‘+‘ 拼接字符串了!
通过选择合适的字符串拼接方法,可以显著提升 Python 代码的效率和可读性。在实际开发中,根据具体需求和场景选择最佳的方法,避免不必要的性能损失。
38 5
|
19天前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
24 7
|
25天前
|
Python
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
32 6
|
2月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
60 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
3月前
|
Python
python获取字符串()里面的字符
在Python中,如果你想获取字符串中括号(比如圆括号`()`、方括号`[]`或花括号`{}`)内的字符,你可以使用正则表达式(通过`re`模块)或者手动编写代码来遍历字符串并检查字符。 这里,我将给出使用正则表达式的一个例子,因为它提供了一种灵活且强大的方式来匹配复杂的字符串模式。 ### 使用正则表达式 正则表达式允许你指定一个模式,Python的`re`模块可以搜索字符串以查找匹配该模式的所有实例。 #### 示例:获取圆括号`()`内的内容 ```python import re def get_content_in_parentheses(s): # 使用正则表达
115 36
|
2月前
|
自然语言处理 Java 数据处理
【速收藏】python字符串操作,你会几个?
【速收藏】python字符串操作,你会几个?
61 7
|
2月前
|
索引 Python
Python 高级编程:深入探索字符串切片
在Python中,字符串切片功能强大,可灵活提取特定部分。本文详细介绍切片技巧:基本切片、省略起始或结束索引、使用负数索引、设定步长及反转字符串等。此外,还介绍了如何结合其他操作进行切片处理,如先转换大小写再提取子串。 来源:https://www.wodianping.com/yeyou/2024-10/48238.html
46 4
|
3月前
|
Python
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
这篇文章介绍了如何使用Python的第三方库chardet来检测字符串的编码类型,包括ASCII、GBK、UTF-8和日文编码的检测示例。
156 6
下一篇
DataWorks