【第10天】Python第一阶段学习总结
2021/09/27
一. r语法
-
在字符串的最前面加r或R,可以让字符串中所有的转义字符的功能消失(每个符号都会变成普通字符
str1 = r'C:\users\name\test\demo.py' print(str1)
二. 字符串格式化
1. 格式字符串
-
语法:包含格式占位符的字符串%(数据1,数据2,…)
-
格式占位符:
%s - 字符串占位符(任何类型的数据)
%d - 整数占位符
%f - 浮点数占位符(保留6位小数)
%.Nf - 浮点数保留N位小数# 1) %s可以给任何类型的数据占位 str1 = '%sxxx' % ('六六六') print(str1) str1 = '%sxxx' % [10, 20] print(str1)
# 2) %d可以给任何能转换成数字的数据占位 str1 = '%d - xxxx' % 5.12 print(str1)
# 3) %f可以给任何能转换成数字的数据占位 str1 = '%f - xxxx' % 4.34 print(str1)
# 4) %.Nf str1 = '余额:%.2f' % 234523242.99912 print(str1)
2. f-string
-
语法:f’{任何有结果的表达式}’ - 用表达式的结果来填充{}所在的位置
name = '小明' age = 18 str1 =f'{name}-{age}--{age * 10}' print(str1)
-
加参数
语法:f'{任何有结果的表达式:参数}'
a. .Nf - 控制小数位数
money = 2305 str1 = f'金额:{money:.2f}' print(str1)
b. , - 逗号分隔银行金额的格式
money = 23509888 str1 = f'余额:{money:,}' print(str1)
c. .N% - 将数转换成百分比,比值保留N位小数
rate = 0.5 str1 = f'市场占有率:{rate:.2%}' print(str1)
d. X>N、X<N
X>N - 将数据转换成长度为N的字符串,不够在前面用X对应的字符来填充
X<N - 将数据转换成长度为N的字符串,不够在后面用X对应的字符来填充<,> - 决定填充的时候填在前面还是后面
X - 填充字符
N - 长度
num = 9 str1 = f'Python2106{num:0>3}' print(str1) # Python2106009
三. 字符串相关方法
1. center, rjust, ljust, zfill
字符串.center(长度,填充字符),例如:'abc'.center(7, 'x') -> 'xxabcxx'
字符串.rjust(长度,填充字符),例如:'abc'.rjust(7, 'x') -> 'xxxxabc'
字符串.ljust(长度,填充字符),例如:'abc'.ljust(7, 'x') -> 'abcxxxx'
字符串.zfill(长度) == 字符串.rjust(长度,'0'),例如:'abc'.zfill(7) -> '0000abc'
2. count
字符串1.count(字符串2) - 统计字符串1中字符串2出现的次数
字符串1.count(字符串2,开始下标,结束下标) - 在开始下标到结束下标(取不到)对应的范围内统计字符串2出现的次数
str1 = 'how are you? i am fine, thank you! and you?'
print(str1.count('a')) # 4
print(str1.count('you')) # 3
print(str1.count('a', 0, 12)) # 1
3. find、index
字符串1.find(字符串2) - 获取字符串1中字符串2第一次出现的位置,返回0开始的下标值;如果字符串2不存在返回-1
字符串1.index(字符串2) - 获取字符串1中字符串2第一次出现的位置,返回0开始的下标值;如果字符串2不存在,结果报错
字符串1.find(字符串2,开始下标,结束下标)、字符串1.index(字符串2,开始下标,结束下标)
str1 = 'how are you? i am fine, thank you! and you?'
print(str1.find('you')) # 8
print(str1.index('you')) # 8
print(str1.find('you1')) # -1
# print(str1.index('you1')) 报错
print(str1.find('you', -20, -1)) # 30
4. isdigit、isnumeric
字符串.isdigit() - 判断是否是纯数字字符串(数字指-~9的数字字符)
字符串.isnumeric() - 判断是否是纯数字字符串(数字指具有数字以以的字符)
print('1313123123'.isdigit()) # True
print('2323323'.isnumeric()) # True
print('23数'.isnumeric()) # False
print('23一十二'.isnumeric()) # True
print('Ⅴ'.isnumeric()) # True
5. islower, isupper
字符串1.islower() - 判断字符串是否是纯小写字母字符串
字符.islower() - 判断是否是小写字母
字符串1.isupper() - 判断字符串是否是纯大写字母字符串
字符.isupper() - 判断是否是大写字母
print('a'.islower()) # True
print('abcbcbcbcc'.islower()) # True
print('acbABBC'.islower()) # False
print('ABC'.isupper()) # True
6. join
字符串.join(序列) - 将序列中的元素用指定的字符串拼接成一个新的字符串
注意:序列中的元素必须是字符串
result = '+'.join('abc')
print(result) # a+b+c
result = '❤'.join('我爱你')
print(result) # 我❤爱❤你
# 练习:将下面列表中的元素合并成一个字符串
list1 = ['abc', 100, 12.5, True, 'hello']
result = ''.join(str(x) for x in list1)
print(result)
for x in list1:
result = ''.join(str(x))
print(result, end='')
print()
# 练习2:已经一个列表保存多个学生的分数,提取所有学生的姓名,以一个字符串的形式返回
# [{'name':'张三', 'age': 18}, {'name':'小明', 'age': 20}, {'name':'小花', 'age': 30}] -> '张三,小明,小花'
students = [{'name':'张三', 'age': 18}, {'name':'小明', 'age': 20}, {'name':'小花', 'age': 30}]
result = ','.join(x['name'] for x in students)
print(result)
7. strip、lstrip、rstrip
字符串.strip() - 去掉字符串两端的空白字符
字符串.lstrip() - 去掉字符串前面的空白字符
字符串.rstrip() - 去掉字符串后面的空白字符
str1 = ' \tabc 123 \n'
result = str1.strip()
print('===', result, '====', sep='')
result = str1.lstrip()
print('===', result, '====', sep='')
result = str1.rstrip()
print('===', result, '====', sep='')
8. replace
字符串1.replace(字符串2,字符串3) - 将字符串1中所有的字符串2替换成字符串3
字符串1.replace(字符串2,字符串3, N) - 替换前N个
str1 = 'how are you? i am fine, thank you! and you?'
result = str1.replace('you', 'me')
print(result) # how are me? i am fine, thank me! and me?
result = str1.replace('you', 'me', 1)
print(result) # how are me? i am fine, thank you! and you?
9. maketrans, translate
str.maketrans('字符串1, 字符串2) - 创建一张字符串1和字符串2的字符对应表
字符串.translate(表)
table = str.maketrans('ain', '你我他')
str1 = 'how are you? i am fine, thank you! and you?'
result = str1.translate(table)
print(result)
# 练习:将字符串中所有的阿拉伯数字都替换成对应的中文数字
table1 = str.maketrans('0123456789', '零一二三四五六七八九')
str2 = '123木头人,88'
result1 = str2.translate(table1)
print(result1)
10. rfind、rindex
str1 = 'how are you? i am fine, thank you! and you?'
print(str1.find('you')) # 8
print(str1.rfind('you')) # 39
11. split
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串进行切割
注意:如果切割点在最前面或者最后面或者出现连续的切割点,结果会出现空串
str1 = 'abc1abc1abc1bbc1bba1abc1bbc1'
result = str1.split('1')
print(result)