字符串及相关操作
字符串是Python中最常用的数据类型,其重要性不必多言
在Python3中,所有的字符串都是Unicode字符串
1.字符串的定义
(1) s1 = ""
(2) s2 = ''
(3) s3 = str() #此函数也可将其它数据类型或对象转化为字符串
(4)
s = '''Dr.Liu
is
IEEE
Fellow''' #使用三引号可以实现字符串跨多行,不必再大量使用转义字符
2.字符串的更新
(1) 字符串的连接与合并[使用+=]
s1 = "hello"
s2 = " world"
s1 += s2
print(s1) #输出为hello world
(2) 字符串的重复[使用*]
s='hello'*5 #将字符串s复制5次,也可用于字符串的初始化
print(s) #输出为hellohellohellohellohello
3.字符串的修改与判断
3.1 字符串替换
(1) 使用replace(oldvalue, newvalue, count) 方法可以把字符串中的old(旧字符串) 替换成 new(新字符串)
如果指定第三个参数max,则替换不超过max次
|参数 |描述
|oldvalue |必需。要检索的字符串。
|newvalue |必需。替换旧值的字符串。
|count |可选,为数字,指定要替换的旧值出现次数。默认为所有的出现。
(2) 实际例子
# 替换单词“joker”
txt = "魏文志 is a joker"
s = txt.replace("joker", "男酮")
print(s) # 魏文志 is a 男酮
-------------------------------------------------
# 替换所有出现的单词“男酮”
txt = "姜官 is a real 男酮, 郭子 is also a 男酮."
s = txt.replace("男酮", "牛马")
print(s) # 姜官 is a real 牛马, 郭子 is also a 牛马.
-------------------------------------------------
# 替换前两次出现的单词“one”
txt = "one one was a race horse, two two was one too."
s = txt.replace("one", "three", 2)
print(s) # three three was a race horse, two two was one too.
3.2 删除左/右指定字符串
(1) lstrip(characters)方法用于截掉字符串开头的空格或指定字符
(2) rstrip(characters)方法用于删除字符串末尾的指定字符,默认为空白符(包括空格、换行符、回车符、制表符)
(3) strip()方法用于移除字符串头尾两端指定的字符(默认为空格)或字符序列
# 删除前导和尾随字符:
txt = ",,,,,,,,国子今天又和小蔡一起恰饭了..........."
s = txt.strip(',.')
print(s)
3.3 字符串大小写转换
(1) upper()方法可将字符串中的小写字母转为大写字母(符号和数字将被忽略)
s = "hello world".upper()
print(s) # 输出为HELLO WORLD
(2) lower()方法可将字符串中所有大写字符转为小写(符号和数字将被忽略)
s = "HELLO WORLD".lower()
print(s) # 输出为hello world
(3) capitalize()方法可将字符串的第一个字母变成大写,其他字母变成小写
s = "hello WORLD".capitalize()
print(s) # 输出为Hello world
(4) title()方法可将字符串中所有单词的首个字母转化为大写,其余字母均为小写
s = "today is a nice day!".title()
print(s) # 输出为Today Is A Nice Day!
(5) swapcase()方法可将字符串中的大小写字母进行转换,即大写变小写,小写变大写
s = "HELLO world".swapcase()
print(s) # 输出为hello WORLD
3.4 字符串大小写判断
(1) islower()方法可检测字符串是否由小写字母组成
s1 = "HELLO world"
s2 = "hello world"
print(s1.islower(), s2.islower()) # 输出分别为False True
(2) isupper()方法可检测字符串是否由大写字母组成
s1 = "HELLO world"
s2 = "HELLO WORLD"
print(s1.isupper(), s2.isupper()) # 输出分别为False True
(3) istitle()方法可检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写(符号和数字将被忽略)
s1 = "My Name Is Joker"
s2 = "Today is a good Day"
print(s1.istitle(), s2.istitle()) # 输出分别为True False
3.5 其它字符串判断函数
函数 | 功能 |
---|---|
isidentifier() | 如果字符串是标识符,则返回 True |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True ,否则返回 False |
isnumeric() | 如果字符串中的所有字符都是数字,则返回 True |
isdecimal() | 检查所有字符是否都是十进制数(0~9),是则返回 True, 否则返回 False |
4.字符串的填充
(1) center(length, character)方法返回一个指定的宽度width居中的字符串,fillchar为填充的字符,默认为空格
s = "joker"
txt = s.center(20, 'A') # 后一个参数只能是单个字符
print(txt) # 输出为AAAAAAAjokerAAAAAAAA
(2) ljust(length, character)方法返回一个左对齐的字符串,在右侧填充字符,默认为空格
s = "joker"
txt = s.ljust(20, "A")
print(txt) # 输出为jokerAAAAAAAAAAAAAAA
(3) rjust(length, character)方法返回一个右对齐的字符串,在左侧填充字符,默认为空格
s = "joker"
txt = s.rjust(20, "A")
print(txt) # 输出为AAAAAAAAAAAAAAAjoker
5.字符串的索引,切片与逆序
(1) 下标索引访问字符串分为两个种类,即正向索引和反向索引
正向索引下标从0开始,到len(str)-1结束
反向索引下标从-1开始,到-len(str)结束
------------------------------------------
字符串值 H e l l o 小 牛 马
正向索引 0 1 2 3 4 5 6 7
反向索引 -8 -7 -6 -5 -4 -3 -2 -1
------------------------------------------
举例:
s = "过了一个暑假,豪子更黑了" # len()函数可求出当前字符串的长度
print(s[0], s[len(s) - 1]) #过 了
print(s[-1], s[-len(s)]) #了 过
(2) 使用切片访问字符串的格式为 str_name[strat : end : step]
start表示起始索引,end表示结束索引,step表示步长,索引遵循左闭右开原则,即str[0:2]是不包含第3个字符的,截出来的是str[0]和str[1]
☆☆☆ str_name[::-1]可用来表示逆序后的字符串
s = "过了一个暑假,豪子更黑了"
print(s[7:12]) #豪子更黑了
print(s[::-1]) #了黑更子豪,假暑个一了过
6.检查元素是否存在于字符串中
关键字 | 描述 |
---|---|
in | 如果字符串中包含给定的字符返回 True |
not in | 如果字符串中不包含给定的字符返回 True |
s = 'Hello Python'
print('H' in s) #True
print('Python' not in s) #False
7.字符串的格式化输出
Python中的print()格式化方法和C++中的printf()一致
a, b = map(int, input().split())
print("%d %d" % (a, b))
Python字符串格式化符号如下表中所示:
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
其它一些格式化辅助操作指令
符 号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
# | 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’) |
0 | 显示的数字前面填充’0’而不是默认的空格 |
% | ‘%%‘可输出一个单一的’%’ |
var() | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |