字符串相关方法函数和字符串格式
字符串的相关运算符
'''
+ - 字符串1 + 字符串2 - 将两个字符串合并成一个字符串
* - 字符串1 * N、 N * 字符串 - 字符串重复N次产生一个新的字符串
'''
str1='123'
str2='abc'
print(str1+str2)
print(str1*2)
'''
比较运算
==、!=
'''
print('abc'=='acb')
'''
比较大小: >=、<=、>、<
两个字符串比较大小,比较的是第一个不相等的字符的编码值的大小
应用:比较字符大小来判断字符的类型
判断是否是数字字符: '0' <= x <='9'
判断是否是小写字母: 'a' <= x <='z'
判断是否是大写字母: 'A' <= x <='Z'
判断是否是中文: '\u4e00' <= x <='\u9fa5'
'''
字符串的相关方法函数
序号 | 方法及描述 |
---|
1 | capitalize() 将字符串的第一个字符转换为大写 |
2 | center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
3 | count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
4 | bytes.decode(encoding=“utf-8”, errors=“strict”) Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
5 | encode(encoding=‘UTF-8’,errors=‘strict’) 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’ |
6 | endswith(suffix, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
7 | expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
8 | find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
9 | index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常。 |
10 | isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
11 | isalpha() 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
12 | isdigit() 如果字符串只包含数字则返回 True 否则返回 False… |
13 | islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
14 | isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False |
15 | isspace() 如果字符串中只包含空白,则返回 True,否则返回 False. |
16 | istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
17 | isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
18 | join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
19 | len(string) 返回字符串长度 |
20 | [ljust(width, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
21 | lower() 转换字符串中所有大写字符为小写. |
22 | lstrip() 截掉字符串左边的空格或指定字符。 |
23 | maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 | max(str) 返回字符串 str 中最大的字母。 |
25 | min(str) 返回字符串 str 中最小的字母。 |
26 | [replace(old, new , max]) 把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 |
27 | rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找. |
28 | rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始. |
29 | [rjust(width,, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
30 | rstrip() 删除字符串末尾的空格或指定字符。 |
31 | split(str=“”, num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
32 | [splitlines(keepends]) 按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 | startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
34 | [strip(chars]) 在字符串上执行 lstrip()和 rstrip() |
35 | swapcase() 将字符串中大写转换为小写,小写转换为大写 |
36 | title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
37 | translate(table, deletechars=“”) 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 | upper() 转换字符串中的小写字母为大写 |
39 | zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 | isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
41 | eval() 执行储存在字符串或文件中的 Python 语句 |
42 | exec() 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。 |
'''
max、min、sorted
'''
print(max('12asz9'))
print(sorted('a1b4s'))
'''
len(字符串) - 统计字符串中字符的个数
'''
print(len('123a')
'''
str(数据) - 将数据转换成字符串
所有的数据都可以转换成字符串
转换的时候直接在数据的打印值外面加引号
'''
str(10)
str(True)
str([1,2,'4'])
str({'1':2,"2":'1'})
'''
eval(字符串) - 将字符串的内容转换成有效代码的计算结果
'''
result = eval('100')
print(result,type(result))
result = eval('100.1')
print(result,type(result))
result = eval('[10,20,30]')
print(result,type(result))
a = 0
result = eval('[10,a,20]')
print(result,type(result))
x = 10
y = 20
result = eval('x+y')
print(result,type(result))
'''
center、rjsut、ljust、zfill
如果给的长度小于原字符串的长度,结果就是原字符串
字符串.center(宽度, 填充字符) xabcx
字符串.rjsut(宽度, 填充字符) XXabc
字符串.ljust(宽度, 填充字符) abcxx
字符串.zfill(宽度) 0000bc
'''
str1 = 'abc'
result1 = str1.center(7,x)
print(result1)
result2 = str1.rjsut(7,x)
'''
字符串1.count(字符串2) - 统计字符串1中字符串2的个数
字符串1.count(字符串2,开始下标,结束下标) - 统计字符串1中指定范围内有几个字符串2
'''
str1 = 'how are you? Im fine, Thank you! and you?'
print(str1.count('you'))
print(str1.count('you',13))
print(str1.count('you',-14,-9))
'''
字符串1.endswith(字符串2) - 判断字符串1是否以字符串2结尾
'''
print('abc123'.endswith('23'))
print('abc123'.endswith('12'))
'''
find、rfind、index、rindex
字符串1.find(字符串2) - 获取字符串1中第一个字符串2出现的位置,如果字符串2不存在返回-1
字符串1.index(字符串2) - 获取字符串1中第一个字符串2出现的位置,如果字符串2不存在报错
字符串1.find(字符串2,开始下标,结束下标)
字符串1.index(字符串2,开始下标,结束下标)
字符串1.rfind(字符串2) - 获取字符串1中最后一个字符串2出现的位置,如果字符串2不存在返回-1
字符串1.rindex(字符串2) - 获取字符串1中最后一个字符串2出现的位置,如果字符串2不存在报错
字符串1.rfind(字符串2,开始下标,结束下标)
字符串1.rindex(字符串2,开始下标,结束下标)
'''
str1 = 'how are you? Im fine, Thank you! and you?'
print(str1.find('you'))
'''
字符串.isalnum() - 判断字符串中所有的字符是否全是数字、字母或者中文
字符串.isalpha() - 判断字符串中所有的字符是否是字母或者中文
字符串.isdigit() - 判断字符串中所有的字符是否全是数字(只把0~9看数字)
字符串.isnumeric() - 判断字符串中所有的字符是否全是数字字符(将所有独立存在表示一个数值的符号都看成数字)
字符串.islower() - 判断字符串中所有的字符是否全是小写字母
字符串.isupper() - 判断字符串中所有的字符是否全是大写字母
(常用!)字符.islower() - 判断指定字符是否是小写字母
(常用!)字符.isupper() - 判断指定字符是否是大写字母
字符串.isspace() - 判断字符串中所有的字符是否都是空白字符
'''
x = 'K'
print(x.islower())
print(x.isupper())
x = '0232一34二三十百万千拾万'
print(x.isdigit())
print(x.isnumeric())
"""
字符串.join(序列) - 将序列中的元素通过指定的字符串连接成一个新的字符串
注意:序列中的元素必须全是字符串
"""
list1 = ['abc', 'mn', 'xy']
result = ''.join(list1)
print(result)
"""
字符串.lower() - 将字符串中所有的大写字母都转换成小写字母
字符串.upper() - 将字符串中所有的小写字母都转换成大写字母
"""
print('Kashs234--HKAM28pm'.lower())
print('Kashs234--HKAM28pm'.upper())
"""
字符串.strip() - 删除字符串前后的空白字符
字符串.lstrip() - 删除字符串前面的空白字符
字符串.rstrip() - 删除字符串后面的空白字符
"""
str1 = '\t \n\t abc 123 \t\n\t'
print('---', str1, '---', sep='')
print('---', str1.strip(), '---', sep='')
print('---', str1.lstrip(), '---', sep='')
print('---', str1.rstrip(), '---', sep='')
"""
1)str.maketrans(字符串1, 字符串2) - 让字符串1中的字符与字符串2中的字符创建一个对应关系表
注意:字符串1的长度和字符串2的长度必须一致
例如: str.maketrans('abc', '123') - 建立一个a和1对应,b和2对应,c和3对应的关系表
2)字符串.translate(字符对应关系表) - 将字符串中的字符按照字符对应关系表对字符进行替换
"""
table = str.maketrans('abc', '123')
result = 'ashsnksmbssaaos'.translate(table)
print(result)
week = '星期2'
table = str.maketrans('1234567', '一二三四五六天')
print(week.translate(table))
"""
字符串1.replace(字符串2, 字符串3) - 将字符串1中所有的字符串2都替换成字符串3
字符串1.replace(字符串2, 字符串3, N) - 将字符串1中前N个字符串2都替换成字符串3
"""
str1 = 'how are you? Im fine, Thank you! and you?'
result = str1.replace('you', 'ME')
print(result)
"""
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串1进行切割,返回一个列表
字符串1.split(字符串2, N) - 将字符串1中前N个字符串2作为切割点对字符串1进行切割
"""
str1 = 'how are you? Im fine, Thank you! and you?'
result = str1.split('you')
print(result)
字符串格式
符 号 | 描述 |
---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %F 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
'''
字符串格式化背景:一个字符串内容中可能有部分数据是变化的
1.字符串拼接
2.格式字符串
格式占位符
%s - 字符串占位符(C,java);python中可以为任何类型的数据占位
%d - 整数占位符,可以给任何数字占位,只留下整数部分
%f - 浮点数占位符(默认保留6位小数)
%.Nf - 浮点数占位符,保留N位小数
%c - 字符占位(可以填充字符或字符编码值)
3.f-string
在字符串最前面加f,然后在字符串中通过{}来确定变化的部分
基本用法 - {表达式}
加参数 - {表达式:参数}
参数1
:.Nf - 控制保留N位小数
参数2
:, - 金额分隔
参数3
:填充字符>长度
:填充字符<长度
注意:如果填充字符没有,用空格填充
4.字符串.format()
'''
name='张三'
age=18
print(name+'今年'+str(age)+'岁')
print('%s今年%d岁'%(name,age))
print(f'{name}今年{age}岁')
maney = 16890.2823
print(f'月薪:{money}')
print(f'月薪:{money:.2f}')
print(f'月薪:{money:,}')
print(f'月薪:{money:,.2f}')
num=19
print(f'2021{num:0>3}')