转义字符
转义字符 | 含义 |
---|---|
\\ | 反斜杠符号 |
\’ | 单引号 |
\" | 双引号 |
\n | 换行 |
\b | 退格 |
\t | 横向制表符 |
\v | 垂直制表符 |
在字符串前面添加r或R,禁止转义字符的实际意义
print(r'c:\user\name')
ps: 通过r禁止 \n 的换行意义
格式化字符串输出
- 格式符
name = ""
print("My name is %s" % name)
- format()
name = ""
print("My name is {}".format(name))
- f-strings
name = ""
print("My name is {name}")
字符串的索引
- 语法格式
字符串[索引]
str_1 = 'Python' #获取字符P
print(str_1[0]) #正向索引
print(str_1[-6]) #反向索引
字符串的切片
切片通过冒号隔开的两个索引来实现
- 语法格式
slice[start:end:step]
start:表示起始索引,省略时,从序列中第一个元素开始
stop:表示结束索引(不包含结束位本身),省略时,到序列最后一个元素结束
step:表示步长(默认为1,不能为0)
str_1 = "Python"
print(str_1[1:4:2]) #输出 yh
print(str_1[::-1]) #输出 nohtyP
print(str_1[:3]) #输出 Pyt
切片与索引的区别:
索引只能获取单个元素,而切片可以获取一定范围内的元素。
字符串的处理方法
注意:
字符串对象是不可变的,字符串对象提供的涉及字符串“修改”的方法都是返回修改后的新字符串,并不对原始字符串做任何修改
- 语法格式
字符串.方法名([参数列表]) - 大小写转换
s = 'What is your name?'
print(s.lower()) # what is your name?
print(s.upper()) # WHAT IS YOUR NAME?
print(s.capitalize()) # What is your name?
print(s.title()) # What Is Your Name?
print(s.swapcase()) # wHAT IS YOUR NAME?
- 字符串中字符类型的判断
(1)isdecimal()
: 如果字符串中只包含十进制数字则返回True,否则返回False
(2)isdigit()
: 如果字符串中只包含数字则返回True,否则返回False
(3)isnumeric()
: 如果字符串中只包含数字则返回True,否则返回False
(4)isalpha()
: 如果字符串中至少有一个字符,并且所有字符都是字母则返回True,否则返回False
(5)isalnum()
: 如果字符串中至少有一个字符,并且所有字符都是字母或数字则返回True,否则返回False - 字符串对齐
(1)ljust(width,fillchar = None)
: 使用字符 fillchar 以左对齐方式填充字符串,使其长度变为width;
(2)center(width,fillchar = None)
: 使用字符 fillchar 以居中方式对其填充字符串,使其长度变为width;
(3)rjust(width,fillchar = None)
; 使用字符 fillchar 以右对齐方式填充字符串,使其长度变为width;
str_2 = "Main Menu"
print(str_2.center(20, '='))
print(str_2.ljust(20, '-'))
print(str_2.rjust(20, '+'))
运行结果如下:
- 子串查找
(1)find(sub, start = None, end = None)
(2)index(sub, start = None, end = None)
两种方法进行查找子串,如果查找到则返回查找该子串首次出现的位置索引,如果没有查找到 find 方法返回 -1,index方法则抛出异常
text = "Explicit is better than implicit."
print(text.find('i')) # 4
print(text.index('t')) # 7
print(text.find('o')) # -1
print(text.index('o')) # 异常
- 字符串前缀和后缀的判断
(1)startswith(prefix, start = None, end = None)
: 判断字符串前缀
(2)endswith(suffix, start = None, end = None)
: 判断字符串后缀
path = 'C:\\python37\\NEWS.txt'
print(path.endswith('.txt')) # True
print(path.startswith('C:')) # True
print(path.startswith('E:')) # False
- 字符串替换
str.replace(old, new, count = None)
old — 表示原有子串
new — 表示新的子串
count — 用于设定替换次数
word = "美女,美女,美女"
print(word.replace('美女', '帅哥', 1))
print(word.replace('美女', '帅哥'))
# 如果替换次数为空则替换所有。
输出结果如下图:
- 字符串分割
字符串的spilt()方法可以使用分隔符把字符串分割成序列,该方法的语法格式如下:
str.split(sep = None, maxsplit = -1)
sep — 分隔符,默认为空格
maxsplit — 用于设定分割次数
小测验
创建字符串 ‘Study Hard’ ,命名为 v
- 在v中查找子串 “up”
- 判断 v 变量对应的值是否以 “S” 开头和以 “D” 结尾
- 将 v 变量对应的值中的 “d” 替换为 “p”
- 将 v 变量对应的值根据 空格 分割
- 将 v 对应的值分别变大写和小写
- 输出 v 变量的前五个字符
- 将 v 居中对齐,宽度为20,填充字符为 *
v = 'Study Hard'
print(f"1.查找子串up: {v.find('up')}")
print(f"2.变量是否以 S 开头: {v.startswith('S')}")
print(f"3.变量是否以 D 结尾: {v.endswith('D')}")
print(f"4.根据空格分割: {v.split()}")
print(f"5.转换为大写: {v.upper()}")
print(f" 转换为小写: {v.lower()}")
print(f"6.输出前五个字符: {v[:5]}")
print(f"7.居中对齐,宽度为20,填充字符为*: {v.center(20, '*')}")
输出结果如下: