廊坊网站建设公司费用今日武汉最新消息
Python 程序设计入门(005)—— 字符串操作
目录
- Python 程序设计入门(005)—— 字符串操作
- 一、字符串切片与连接
- 1、切片的索引方式
- 2、切片操作的基本表达式
- 3、 切片操作举例
- 4、字符串连接
- 二、字符串替换:replace() 方法
- 三、去除字符串首尾特殊字符:strip() 方法
- 四、字符串大小写转换
- 五、字符串的检索
- 1、count() 方法
- 2、find() 方法
- 3、index() 方法
- 4、len() 函数
- 六、分割字符串:split() 方法
Python 中的字符串是一种序列,序列是一块用于存放多个值的内存空间。Python 内置了以下几种序列结构:字符串、列表、字典、元组和集合。
Python 中的字符串由一个或多个单个字符组成。可以通过特定的函数实现对字符串的拼接、截取、格式化等操作。
一、字符串切片与连接
在 Python 中,可以对字符串进行遍历操作,也可以使用切片的方式截取字符串。在Python中,切片(slice)是对序列型对象(如:list,string,tuple)的一种高级索引方法。普通索引只取出序列中一个下标对应的元素,而切片可以取出序列中一个范围对应的元素,这里的范围不是狭义上的连续片段。
1、切片的索引方式
以 a = [1,2,3,4,5,6,7,8,9] 为例,正索引和负索引如下表所示:
值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
正索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
负索引 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
2、切片操作的基本表达式
一个完整的切片包含三个参数(start_index,end_index,step)和两个冒号。当只有一个冒号时,默认第三个参数step=1;当一个冒号也没有时,start_index = end_index,表示切取 start_index 指定的那个元素。
切片操作的语法格式如下:
string[start_index: end_index: step]
说明:
(1)string:表示要截取的字符串。
(2)在中括号中以冒号分隔索引值。
(3)start_index:表示要截取的开始索引值。该参数可以省略,表示从第一个字符开始。
(4)end_index:表示要截取的结束索引值。该参数可以省略,表示截取到最后一个字符结束。
(5)step:表示切片步长,该参数可以省略,默认值为 1。
3、 切片操作举例
(1)切割单个字符
str1="www.hist.edu.cn"
print(str1[0]) # 单个字符,第0位就是第一个字符
print(str1[4]) # 第4位(第5个字符),注意从0作为第一个字符程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
w
h
(2)切割完整字符串
str1="www.hist.edu.cn"
print(str1[:]) # 单独一个冒号,代表从头取到尾,步长默认为1
print(str1[::]) # 单独两个冒号一样代表从头取到尾,步长默认为1
print(str1[::-1]) # 步长为-1,故应从右往左取,实现字符串的翻转程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
www.hist.edu.cn
www.hist.edu.cn
nc.ude.tsih.www
(3)当 start_index 和 end_index 全部为正数时
str1="www.hist.edu.cn"
print(str1[4:8]) # 默认步长为1,从左往右取出hist,注意前闭后开
print(str1[1:6:-1]) # 当取值的大小方向与步长的方向冲突时,返回值为空
print(str1[:3]) # 没有star_index代表从头开始取
print(str1[:8:-1]) # step为-1,从最后一个字符到第8个
print(str1[6::-1]) # step为-1,从第6个字符到第0个程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
histwww
nc.ude
sih.www
(4)当 start_index 和 end_index 全部为负数时
str1="0123456789"
print(str1[:-6]) # 从头开始取到从右往左数的第6个字符,默认步长为1(0123)
print(str1[-1:-6]) # 当取值的大小方向与步长的方向冲突时,返回值为空
print(str1[-1:-6:-1]) # 从右边第1个字符取到右边第5个字符(98765)
print(str1[-6:-1]) # step为-1,从最后一个字符到第6个(45678)
print(str1[:-6:-1]) # 从0取到-6,步长为-1(98765)
print(str1[-6::-1]) # 从-6取到开头,步长为-1(43210)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
012398765
45678
98765
43210
(5)start_index 和 end_index 为正负混合时
str1="0123456789"
print(str1[1:-6]) # 从第1个字符开始取到从右往左数的第6个字符,默认步长为1(123)
print(str1[1:-6:-1])# 返回值为空
print(str1[-1:6]) # 返回值为空
print(str1[-1:6:-1])# 从右边第1个字符取到第6个字符,步长为-1(987)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
123987
4、字符串连接
使用 + 可以实现字符串的连接操作。格式如下:
var = str1 + str2 + str3 + ...
说明:在进行字符串拼接时,所有参与拼接的常量和变量都必须是 string 类型。
例如:
str1 = "中国"
str2 = "河南"
str3 = "新乡"
a = 20
print(str1 + str2 + str3)
print(str1 + str2 + str(a))程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
中国河南新乡
中国河南20
举例:
(1)取出身份证中的生日信息,程序如下:
str1="410755198701255210"
birth=str1[6:10]+"年"+str1[10:12]+"月"+str1[12:14]+"日"
print(birth)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
1987年01月25日
(2)截取电话号码中的数字进行运算,程序如下:
num="13803732541"
num1=int(num[-2:]) # num1="41"
num2=int(num[:2]) # num2="13"
num2+=num1 # num2=54
num1+=num2 # num1=95
num2//=3 # num2=18
num1%=num2 # num1=5
print(num1)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
5
二、字符串替换:replace() 方法
replace() 方法用于将字符串中的一部分字符替换为指定的新字符。如果不指定新字符,则删除字符。replace() 方法的语法格式如下:
str.replace(old[,new[,count]])
说明:
(1)old:表示要被替换的字字符串。
(2)new:表示用于替换 old 的新字符串。
(3)count(可选参数):表示要替换的次数。该参数如果省略,则替换所有匹配字符,指定替换次数时从左向右依次进行。
例如:
str1="www.hist.edu.cn"
str2="13703735512"
str3="410825198710122551"
str4="What's your name?\nMy name is Ligang."
str5="/u01/app/grid_11/log/log_2023_04_22.xml"
print(str1.replace(".","@"))
print(str2.replace(str2[3:7],"****"))
print(str3.replace(str3[6:13],"********"))
print(str4.replace("name","NAME",1))
print(str5.replace("/","").replace("_","").replace(".",""))程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
www@hist@edu@cn
137****5512
410825********22551
What's your NAME?
My name is Ligang.
u01appgrid11loglog20230422xml
三、去除字符串首尾特殊字符:strip() 方法
Python 提供了三个方法:strip()、lstrip()、rstrip(),用于去除字符串首尾的空格及特殊字符。其中 strip() 方法用于去除字符串左右两端的特殊字符或空格,lstrip() 方法用于去除字符串左侧的特殊字符或空格,rstrip() 方法用于去除字符串右端的特殊字符与空格。
以上三个方法的参数相同,如果不指定参数,则默认去除空格、制表符(\t)、回车符(\r)与换行符(\n)。
方法 strip()、lstrip()、rstrip() 的语法格式如下:
str.strip(chars)
str.lstrip(chars)
str.rstrip(chars)
例如:
str1=" Xinxiang "
str2="*Henan%%"
print("Address:"+str1+"City")
print("Address:"+str1.lstrip()+"City")
print("Address:"+str1.rstrip()+"City")
print("Address:"+str1.strip()+"City")
print(str2.strip("%").strip("*"))程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
Address: Xinxiang City
Address:Xinxiang City
Address: XinxiangCity
Address:XinxiangCity
Henan
四、字符串大小写转换
Python 提供了用于字母大小写转换的方法,包括:upper()、lower()、capitalize() 与 title()。语法格式如下:
str.upper() # 将所有字母转换为大写
str.lower() # 将所有字母转换为小写
str.capitalize() # 将一段内容的首字母转换为大写
str.title() # 将每个单词的首字母转换为大写
例如:
str1="I'm a teacher.You are a student."
print(str1.upper())
print(str1.lower())
print(str1.title())
print(str1.capitalize())程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
I'M A TEACHER.YOU ARE A STUDENT.
i'm a teacher.you are a student.
I'M A Teacher.You Are A Student.
I'm a teacher.you are a student.
五、字符串的检索
Python 提供了用于实现字符串检索的方法,通过这些方法可以实现字符串中字符的检索、统计等。
1、count() 方法
count() 方法用于查询一个字字符串出现的次数。语法格式如下:
str.count(sub[,begin[,end]])
说明:
(1)sub:表示要检索的子字符串。
(2)begin 和 end:表示检索范围的起始位置和结束位置的索引值。可以省略,如果不指定则起始位置为字符串的最左侧,结束位置则是字符串的结尾处。
(3)检索时区分大小写。
例如:
str1="www.hist.edu.cn"
print(str1.count(".")) # 3次
print(str1.count("。")) # 0次,不存在
print(str1.count(".",8)) # 2次
print(str1.count(".",9)) # 1次
print(str1.count("w",0,2)) # 2次(前开后闭)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
3
0
2
1
2
2、find() 方法
find() 方法用于查询一个字字符串出现的索引位置,如果没有检索到,返回 -1。语法格式如下:
str.find(sub[,begin[,end]])
说明:sub、begin、end 三个参数与 count() 方法对应的参数作用相同。
例如:
str1="www.hist.edu.cn"
print(str1.find(".")) # 位置为:3
print(str1.find("。")) # 没找到,返回 -1
print(str1.find(".",8)) # 位置为:8
print(str1.find(".",9)) # 位置为:12
print(str1.find("w",0,2)) # 位置为:0程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
3
-1
8
12
0
可以使用 rfind() 方法实现从右向左检索。例如:
str1="www.hist.edu.cn"
print(str1.rfind(".")) # 位置为:12
print(str1.rfind("。")) # 没找到,返回 -1
print(str1.rfind(".",8)) # 位置为:12
print(str1.rfind(".",9)) # 位置为:12
print(str1.rfind("w",0,2)) # 位置为:1程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
12
-1
12
12
1
3、index() 方法
index() 方法用于查询一个字字符串首次出现的索引位置,如果没有检索到则抛出异常 ValueError。语法格式如下:
str.index(sub[,begin[,end]])
说明:sub、begin、end 三个参数与 find() 方法对应的参数作用相同。
例如:
str1="www.hist.edu.cn"
print(str1.index(".")) # 位置为:3
print(str1.index(".",8)) # 位置为:8
print(str1.index(".",9)) # 位置为:12
print(str1.index("w",0,2)) # 位置为:0
print(str1.index("。")) # 没找到,抛出异常程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
3
8
12
0
Traceback (most recent call last):File "C:\Python\Python38\First.py", line 6, in <module>print(str1.index("。")) # 没找到,抛出异常
ValueError: substring not found
4、len() 函数
len() 函数用于计算字符串的长度或列表、元组中元素的个数。len() 函数的语法格式如下:
len(s)
说明:s表示对象,可以是字符串、列表、元组、字典等。
例如:
print(len("abc")) # 3
print(len("河南新乡")) # 4
print(len("中国China")) # 7
print(len("My123")) # 5
print(len("")) # 0程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
3
4
7
5
0
六、分割字符串:split() 方法
用 split() 方法分割字符串,得到一个字符串列表。split() 方法的语法格式如下:
str.split(sep[, maxsplit])
说明:
(1)sep:指定分隔符。
(2)maxsplit:指定要分割的次数。该参数可以省略,如果省略该参数,则分割所有匹配字符。
例如:
str1="王刚,男,20,河南省新乡市,13737351268"
str2="a b c d"
str3="张三\n李四\n王五\n赵六"
str4="Tom\rKate\rJack\rRose"
print(str2.split()) # 如果省略s,则按默认值(空格,换行符,制表符)分割
print(str3.split())
print(str4.split())
print(str1.split(","))
print(str1.split(",",2)) # 只分割前两项,第二个逗号后面的内容作为第三项
print(str1.split(",",3))程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
===================== RESTART: C:\Python\Python38\First.py =====================
['a', 'b', 'c', 'd']
['张三', '李四', '王五', '赵六']
['Tom', 'Kate', 'Jack', 'Rose']
['王刚', '男', '20', '河南省新乡市', '13737351268']
['王刚', '男', '20,河南省新乡市,13737351268']
['王刚', '男', '20', '河南省新乡市,13737351268']