目录
一、字符的基本功能
1.1 字符串概述
- 由多个字母,数字,特殊字符组成的有限序列;
- 在Python中,使用单引号或者双引号都可以表示字符串。
1.2 创建字符串
s = "hello python"
1.3 字符串长度:len()
print(len(str))
1.4 索引
- 语法:s_index = str.index(指定字符):
- 注意: 空格也是一个字符串,获取索引时要注意!
s = "hello python"
s_index = s.index('n')
根据索引获取字符:
print(s[0])
print(s[5]) #空格也是一个字符
print(s[-1])
1.5 切片
s = "hello python"
print(s[4:])
print(s[4:7])
print(s[::-1]) ---> 倒序输出:nohtyp olleh
1.6 拼接/连接
注意:
- 在Python中,使用+ 。只能是字符串和字符串之间,和其他数据类型使用的话不支持。
- 字符串是不可变的,不可修改。拼接后生成新字符串,原字符串不变(内存地址不变)
print("您" + "好") ---> 您好
1.7 重复
print("您好" * 3) ---> 您好您好您好
1.8 成员判断
注意: 若是判断多个字符,需要是连续的字符才可以!输出值为bool值。
s = "hello python"
print("h" in s)
print("h" not in s)
print("hl" in s)
print("he" in s)
1.9 遍历
- 遍历字符:
s = "hello"
for c in s:
print(c)
- 遍历下标:
for i in range(len(s)):
print(i, s[i])
- 遍历下标,字符:
for i, c in enumerate(s): # 遍历下标和字符
print(i, c)
二、字符串的使用
注意: 使用字符串中的功能,一般情况下,都是生成一个新的字符串,原字符串没有发生任何变化。
2.1 count()
用于统计指定字符在字符串中出现的次数(个数)。
- 用法:字符串.count(“指定字符”,[start,end])
1.在整个字符串中进行查找
str2 = "this is a good day good day"
print(str2.count("day"))
2.在指定区间内进行查找
print(str2.count("day",3,10))
2.2 大小写转换
1、字符串.upper() :小写变大写
print("hello".upper())
2、字符串.lower() :大写变小写
print("HELLo".lower())
3、字符串.title() :每个单词首字母大写,其他变小写
print("i loVe you".title()) ---> I Love You
4、字符串.capitalize() :整个字符串第一个字母变大写,其他变小写
print("i loVe you".capitalize())
5、字符串.swapcace() :大小写切换
print("i loVe you".swapcase())
2.3 判断:输出结果为bool值
注意:除了isalpha()中数字会影响判断,其他的数字不会影响判断!
1、字符串.isdigit() :如果字符串中只包含数字,则返回True
print("100".isdigit())
2、字符串.isalpha() :判断是否是字母。如果字符串中至少包含一个字符并且所有的字符都是字母,才返回True。
print('abc'.isalpha())
3、字符串.isalnum() :判断是否是数字或字母。如果字符串中至少包含一个字符并且所有字符都是字母或者数字的时候才返回True。
print('abc'.isalnum())
4、字符串.islower():判断字母是否都是小写。
print('abc1'.islower())
5、字符串.isupper():判断是否是大写。如果字符串中至少包含一个字符并且出现的字母必须是大写字母才返回True,数字的出现没有影响。
print('ABC12'.isupper())
6、字符串.istitle() :判断每个单词首字母是否大写。每个单词的首字母必须全部大写,其他为小写才返回True(只判断单词。数字、特殊字符出现不影响)。
print('Hell'.istitle())
7、字符串.isspace() :判断是否为空格。
print(''.isspace())
2.4 查找find()
注意:如果查找的是一个字符串,则在原字符串中也要找的是连续的字符串,不能是找首字符!
2.4.1 find():从左往右找子字符串第一次出现的开始字符的下标,如果不存在则返回-1
- 语法:str.find(指定字符,[start,end])
1.整个字符串查找:
s = "Hong Kong driver diagnosed"
print(s.find('ong'))
2.指定范围查找:
print(s.find('ong', 3,10 ))
2.4.2 rfind():从右往左找子字符串第一次出现的开始字符的下标,如果不存在则返回-1
- 语法:str.rfind(指定字符,[start,end])
print(s.rfind('ong'))
2.4.3 其他查找方法
- index()、rindex():和find、rfind的使用基本相同,唯一的区别在于如果子字符串查找不到,find返回-1,而index、rindex则直接报错。
- max(str)、min(str):获取str中最大、最小的字母(在ASCII中的顺序)。
2.5 拆分/分割
2.5.1 str.split(指定字符,n):
- 按照指定的字符串进行拆分,返回一个拆分后的列表。n:表示要拆分的个数。
s = "i love you"
list1 = s.split()
list1 = s.split(" ")
list1 = s.split("love") ---> ['i ', ' you']
list1 = s.split("you") ---> ['i love ', '']
list1 = s.split("o") ---> ['i l', 've y', 'u']
只拆分一个‘o':
list1 = s.split("o", 1) ---> ['i l', 've you']
print(list1)
2.5.2 str.splitlines():按行拆分,返回列表
- 注意:
- splitlines(flag) 按照换行符【\n,\r,\r\n】分隔,结果为列表;
- flag:False或者不写,则表示忽略换行符;如果True,则表示保留换行符
s = '''论语
1111111111
2222222222
3333333333'''
print(s.splitlines()) ---> ['论语', '1111111111', '2222222222', '3333333333']
print(s.splitlines(True)) ---> ['论语\n', '1111111111\n', '2222222222\n', '3333333333']
2.6 合并:join()
- join():将列表中的所有字符串用指定的连接字符串合并,返回字符串。只能是连接字符串。
- 用法:‘指定字符串’.join(list)
l = ['论语', '1111111111', '2222222222', '3333333333']
print('+'.join(l)) ---> 论语+1111111111+2222222222+3333333333
print('\n'.join(l))
2.7 替换:str.replace()
- 用法:str.replace(“原字符”, “目标字符”, 替换次数),不改变原字符串。
s = 'mask have tesla tesla tesla'
print(s.replace('tesla', 'BYD')) ---> mask have BYD BYD BYD
print(s.replace('tesla', 'BYD', 2)) ---> mask have BYD BYD tesla
2.8 首尾匹配/前缀和后缀
2.8.1 str.startswith(‘指定字符串’)
- 判断是否以“指定字符串”开头,返回bool值。
- 注意: 子字符串是连续的!
s = 'hello kitty'
print(s.startswith('hello')) ---> True
2.8.2 str.endswith(‘指定字符串’)
- 判断是否以“指定字符串”结尾,返回bool值。
- 注意: 子字符串是连续的!
s = 'hello kitty'
print(s.endswith('tty')) --->True
2.9 去除指定字符
2.9.1 str.strip(’*’):去除两边的指定字符
print('***hello nihao***'.strip('*')) ---> hello nihao
2.9.2 str.lstrip(’*’):去除左边的字符
print('***hello nihao***'.lstrip('*')) ---> hello nihao***
2.9.3 str.rstrip(’*’):去除右边的字符
print('***hello nihao***'.rstrip('*')) ---> ***hello nihao
2.10 填充
2.10.1 center(width, [fillchar])
- 语法:str.center(width, [fillchar]):返回一个指定宽度的居中字符串,width是填充之后整个字符串的长度,fillchar为需要填充的字符串,默认使用空格填充。
print('沈腾'.center(30))
print('沈腾'.center(30, '-')) ---> --------------沈腾--------------
2.10.2 ljust(width, [fillchar])
- 语法:str.ljust(width, [fillchar]):返回一个指定宽度的字符串,将原字符串居左对齐,width是填充之后整个字符串的长度。
print('沈腾'.ljust(30, '-')) ---> 沈腾----------------------------
2.10.3 rjust(width, [fillchar])
- 语法:str.rjust(width, [fillchar]):返回一个指定宽度的字符串,将原字符串居右对齐,width是填充之后整个字符串的长度。
print('沈腾'.rjust(30, '-')) ---> ----------------------------沈腾
2.10.4 zfill(width)
- 语法:str.zfill(width):返回一个指定宽度的字符串,将原字符串居右对齐,剩余的部分使用的数字0填充。
print('沈腾'.zfill(30)) ---> 0000000000000000000000000000沈腾
2.11 eval()
- 作用:eval(str) 将str转换为有效的表达式,参与运算,并返回运算结果。
- 注意: 注意区分eval和int(eval:转换有效的表达式 int:将字符串转换为整型)
print(eval("12+3")) ---> 5
print(int("12+3")) ---> 报错,值错误
三、其他使用【了解】
3.1 编码、解码
3.1.1 编码:str.encode()
- 编码:字符串→二进制,默认UTF-8编码
s = "Puython 前景"
b = s.encode()
3.1.2 解码:.decode()
- 解码:二进制→字符串
s2 = b.decode()
print(s2)
3.2 ASCII码转换
- 字符串转ASCII码:ord()
print(ord(‘a’)) - ASCII码转字符串:chr()
print(chr(100))
3.3 简单加密【了解】
trans = str.maketrans('abc', '123')
print("i am a cool boy".translate(trans)) ---> i 1m 1 3ool 2oy
3.4 转义字符
- \t :tap
- \n:换行
- r’’:使字符串中的转义字符全部失效
- \b:相当于backspace
- 注意: 如果一个字符串中有多个字符需要转义,则可以在字符串的前面添加r,可以避免对字符串中的每个特殊字符进行转义。