day10字符串
1、字符相关操作和函数
1.1字符串相关运算
1.1.1数学运算
- +—— 字符串1+字符串2——将两个字符串合并成一个字符串
- 乘法—— 字符串1**N、 N*字符串——字符串重复N次产生一个新的字符串
str1 = 'abc'
str2 = '123'
print(str1 + str2) # abc123
1.1.2比较运算符
-
==、!=
-
比较大小>=、<=、>、<
-
两个字符串比较大小比较的是第一对不相等的元素(字符)的编码值的大小
-
应用:比较字符大小来判断字符的类型
判断是否是数字字符:’0‘<=x<=‘9’
判断是否是小写字母:’a‘<=x<=‘z’
判断是否是大写字母:’A‘<=x<=‘Z’
判断是否是中文:’\u4e00‘<=x<=’\u9fa5’
1.2相关函数
1.2.1max min (看编码值的大小)sorted
print(max('abcdeAA234'))
print(sorted('orgrnvavbc'))
1.2.2 len——比较重要
- len(字符串)——统计字符个数
1.2.3 str
- str(数据) ——将数据转换为字符串
a.所有的数据都可以转换成字符串
b.转换的时候直接在数据的打印值外面加引号
list1 = [10, 20, 30]
dict1 = {"name": 12}
print(str(list1))
print(str(dict1))
1.2.4 eval
- eval(字符串) ——将字符串的内容转换成有效代码计算结果(去掉字符串的引号,获取结果)
result = eval('100')
print(result, type(result)) # 100 <class 'int'>
result = eval('100.0')
print(result, type(result)) # 100.0 <class 'float'>
# result = eval('[10,a,30]') # 报错
a = 10
result = eval('[10,a,30]')
print(result)
2.字符串相关方法
2.1.center 、rjust 、ljust、zfill
- 字符串.center(宽度,填充的)
- 字符串.rjust(宽度,填充的) --原字符串放右边
- 字符串.ljust(宽度,填充的)
- 字符串.zfill(宽度)——默认‘0’
- 如果给的长度小于原字符串的长度,结果就是原字符串
str1 = 'abcd'
result1 = str1.center(7, '0')
print(result1)
result2 = str1.rjust(7, '0')
print(result2)
result3 = str1.ljust(7, '0')
print(result3)
result4 = str1.zfill(7)
print(result4)
2.2count
- 字符串1.count(字符串2)——统计字符串1中字符串2的个数
- 字符串1.count(字符串2,开始下标,结束下标)——统计字符串1中指定范围内字符串2出现的次数,范围:[开始下标,结束下标)
str1 = 'how are you? Im fine, Thank you! and you?'
result = str1.count('you')
print(result) # 3
result1 = str1.count('you', 5, -3)
print(result1) # 2
2.3 endswith
- 字符串1.endswith(字符串2)——判断字符串1 是否以字符串2结束
2.4 find 、rfind、index、rindex
-
字符串1.find(字符串2)——获取字符串1中第一个字符串2出现的位置,找不到会返回-1
-
字符串1.index(字符串2)——获取字符串1中第一个字符串2出现的位置,找不到会报错
-
字符串1.find(字符串2,开始下标,结束下标)——指定范围内获取字符串1中第一个字符串2出现的位置,
-
字符串1.index(字符串2,开始下标,结束下标)
-
字符串1.rfind(字符串2)——获取字符串1中最后一个字符串2出现的位置,找不到会返回-1
-
字符串1.rindex(字符串2)——获取字符串1中最后一个字符串2出现的位置,找不到会报错
-
字符串1.rfind(字符串2,开始下标,结束下标)——指定范围内获取字符串1中最后一个字符串2出现的位置,
-
字符串1.rindex(字符串2,开始下标,结束下标)
str1 = 'how are you? Im fine, Thank you! and you?'
result = str1.find('you')
print(result)
result1 = str1.rfind('you')
print(result1)
2.5
-
字符串1.isalnum() --判断字符串中所有的字符是否是数字、字母或中文
字符串1.isaplpha() --判断字符串中所有的字符是否是字母或中文 -
字符串1.isdigit() --判断字符串中所有的字符是否全是数字字符(只把0~9看成数字)
-
字符串1.isnumeric() --判断字符串中所有的字符是否全是数字(将所有独立存在表示一个数值的符号都看成数字)
-
字符串1.islower() --判断字符串中所有的字符是否全是小写字母
(常用!)字符.islower() --判断指定字符是否是小写字母 -
字符串1.isupper() --判断字符串中所有的字符是否全是大写字母
(常用!)字符.isupper() --判断指定字符是否是大写字母 -
字符串.isspace() --判断字符串中所有的字符是否都是空白字符
2.6 join
- 字符串.join(序列)——将序列中的元素通过指定的字符串连接成一个新的字符串
- 注意:序列中的元素必须是字符串
list1 = ['abc', 'mn', 'xy']
result1 = ''.join(list1)
print(result1)
result2 = '+'.join(list1)
print(result2)
result3 = 'and'.join('xyz')
print(result3)
nums = [10, 20, 30]
result = ''.join([str(x) for x in nums])
print(result)
练习:将nums中所有数字的第一位连接在一起
# # [10, 23, 89, 902] -> '1289'
nums = [10, 23, 89, 902]
result = ''.join([str(x)[0] for x in nums])
print(result)
2.7 lower、upper
- 字符串.lower() ——将字符串中的所有大写字母变成小写字母
- 字符串.upper()——将字符串中的所有小写字母变成大写字母
2.8 strip、lstrip、rstrip
- (常用!)字符串.strip()——删除字符串前后的空白
- 字符串.lstrip()——删除字符串前的空白
- 字符串.rstrip()——删除字符串后的空白
2.9maketrans、translate(常用)
-
1)str.maketrans(字符串1,字符串2)——让字符串1中的字符与字符串2中的字符创建一个对应的关系表
注意:字符串1的长度和字符串2的长度必须一致 -
2) 字符串.translate(字符对应的关系表)——按照将字符串中的字符按照字符对应关系表对字符进行替换
table = str.maketrans('abc', '123')
print(table)
result = 'abcddddsaawqweqac'.translate(table)
print(result)
week = '星期5'
table = str.maketrans('1234567', '一二三四五六天')
result = week.translate(table)
print(result) #星期五
2.10 replace(!!)
- 字符串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?'
str2 = str1.replace('you', 'ME')
print(str2)
str3 = str1.replace('you', '')
print(str3)
str4 = str1.replace('you', 'ME', 2)
print(str4)
2.11 split(!)
- 字符串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)
3 字符串格式化
3.1 字符串拼接
message = name + '今年' + str(age) + '岁'
print(message)
3.2 格式字符串
-
包含格式占位符的字符串%(数据1,数据2…)
-
格式占位符:
-
-
%s —— 字符串占位符(C,java):python中可以给任何类型的数据占位
%d——整数占位符,可以给任何数字占位
%f——浮点数占位符(默认保留6位小数
%.Nf——浮点数占位符,保留N位小数
%c ——字符占位符
-
massage = '%s今年%d岁' % (name, age)
print(massage)
str1 = '%s========%d===%f====%.2f====%c' % (11, 23, 23.1, 23.1, 97)
print(str1) # 11========23===23.100000====23.10====a
3.3 f-string
3.3.1基本用法
- 在字符串的最前面加f,然后在字符串中通过{}来确定变化的部分
print(message)
height = 190
weight = 75
people = f'{name}身高{height},比率是{height / weight:.2f}'
print(people)
a, b = 10, 'abc'
result = f'{a * 3 > 100}=={b[-1]}'
print(result)
3.3.2加参数
- 参数1
-
- {表达式 :.Nf}——控制保留N位小数
money = 2390000.1234
print(f'月薪{money:.2f}')
- 参数2
-
- :,
money = 239990
print(f'年薪:{money * 12:,}')
# 逗号和小数一起用::, .Nf(保留小数)
print(f'年薪:{money * 12:,.2f}')
- 字符填充
-
- #:填充字符>长度 (字符填前面)
:填充字符<长度 (字符填后面)
- #:填充字符>长度 (字符填前面)
- 注意,如果字符没有,就用空格填充
num = 5
study_id = f'2107{num:0>3}'
print(study_id)
str1 = 'abc'
print(f'{str1:1>4}')
print(f'{str1:a<7}')