基础
- 获取字符串长度:
len(str)
- 子串str1在字符串str中出现的次数:
str.count(str1)
- 字串str1在字符串str中第一次出现的索引:
str.index(str1)
判断类型
判断字符串中字符的类型
str = 'Hello World'
print(str.isspace()) # False str中值包含空格
print(str.isalnum()) # False str中所有字符都是字母/数字
print(str.isalpha()) # False str中所有字符都是字母
print(str.isdecimal()) # False str中所有字符都是数字
print(str.istitle()) # True str中每个单词首字母大写(标题化)
print(str.islower()) # False str中所有字符都是小写
print(str.isupper()) # False str中所有字符都是大写
查找和替换
str = 'Hello World'
print(str.startswith('Hello')) # True str以指定子串开头(区分大小写)
print(str.endswith('world')) # False str以指定子串结尾(区分大小写)
print(str.find('llo', 0, 5)) # 2 str在指定范围0~5内查询子串,若存在返回子串索引,不存在则返回-1
print(str.rfind('l', 0, 5)) # 类似于find(),只是从右边开始查找
print(str.index('llo', 0, len(str))) # 2 str在指定范围内查询子串,若存在返回子串索引,不存在则报错
print(str.rindex('llo', 0, len(str))) # 2 类似于find(),只是从右边开始查找
print(str.replace('llo', 'oll', str1.count('llo'))) # 'Heoll World' str中new_str替换old_str, 替换次数 <= 指定次数
print(str.replace('lla', 'ool', 2)) # 'Hello World' 当str中不存在old_str时,返回str本身
大小写替换
str = 'Hello World'
print(str.lower()) # 'hello world' 将str中所有字符小写
print(str.upper()) # 'HELLO WORLD' 将str中所有字符大写
print(str.title()) # 'Hello World' 将str中每个单词首字母大写(标题化)
print(str.capitalize()) # 'Hello world' 将字符串首字母大写,其他全部小写
print(str.swapcase()) # 'hELLO wORLD' 翻转str中的大小写
去除空白字符
str = '
abc '
print(str.strip()) # 'abc' 去除str两边的空白字符
print(str.lstrip()) # 'abc ' 去除str左边的空白字符
print(str.rstrip()) # '
abc' 去除str右边的空白字符
拆分
str = '
a b c '
print(str.split()) # ['a', 'b', 'c'] 按空白字符切分字符串为列表
print(str.split(' ')) # ['
a b', 'c '] 按空格切分字符串为列表
字符拼接
-
"+"
-
.join() 将列表转化为字符串
str = ['hello', 'world', 'everyone']
print('*'.join(str)) # hello*world*everyone
print(''.join(str)) # helloworldeveryone
- .format() 字符串中{}数量和format()参数个数必须一致
str = '{} {}!'.format('hello', 'world') # hello world!
- %
str = '%s, %s!' % ('hello', 'world') # hello,world!
- string.Template()
首先通过Template初始化一个字符串。这些字符串中包含了一个个key。
通过调用substitute或safe_subsititute,将key值与方法中传递过来的参数对应上,从而实现在指定的位置导入字符串。
这种方式的好处是不需要担心参数不一致引发异常
from string import Template
str = Template('${s1} ${s2} ${s3}!')
print(str4.safe_substitute(s1='hello', s2='world')) # hello world ${s3}!
- F-strings
s1 = 'hello'
s2 = 'world'
print(f'{s1} {s2}!') # hello world!
切片
使用索引值来限定范围,从一个大的字符串切出小的字符串.
适用于字符串、列表、元祖,不支持字典
str[start: end: step]
- 默认start=0, end=len(str), step=1
- 第一个字符索引=0 or -len(str); 第二个字符索引=-1 or len(str)
- step的正负决定切片的方向: 负数(逆序)、正数(顺序)
本质:调用魔法函数__getitem__()
str = '0123456789'
print(str[0:3]) # 012
print(str[:3]) # 012 索引:0 ~ (3-1)
print(str[3:]) # 3456789 索引:3 ~ 最后
print(str[3::2]) # 3579
print(str[::2]) # 02468
print(str[0:len(str)]) # 0123456789 索引: 0 ~ len(str)-1
print(str[-1]) # 9 索引: 最大
print(str[0:-1]) # 012345678 索引: 0 ~ (最大-1)
print(str[::-1]) # 9876543210 从0 ~ 最后 逆序切
print(str[:5]) # 01234 索引:0 ~ 5
print(str[-5:]) # 56789 索引: -5 ~ -1
print(str[-1:0:-1]) # 987654321
print(str[-1:-len(str):-1]) # 987654321
string
import string
# 获取大小写字母集
print(string.ascii_letters) # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
# 获取小写字母集
print(string.ascii_lowercase) # abcdefghijklmnopqrstuvwxyz
# 获取大写字母集
print(string.ascii_uppercase) # ABCDEFGHIJKLMNOPQRSTUVWXYZ
# 获取数字
print(string.digits) # 0123456789
# 获取大小写字母和特殊字符集
print(string.printable) # 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
# 获取特殊字符
print(string.punctuation) # !"#$%&'()*+,-./:;<=>?@[]^_`{|}~
# 获取16进制字符
print(string.hexdigits) # 0123456789abcdefABCDEF