day10字符串和函数基础

day10字符串和函数基础

1.r语言

在字符串的最前面加r或者R可以让字符串中所有的转义字符的功能消失(每个字符都会变成普通字符)

str1 = r'C:\user\name\test\demo.py'
print(str1) # C:\user\name\test\demo.py
2.字符串格式化

1.字符串拼接

name = '小张'
age = 19
message = name + '今年' + str(age) + '岁'
print(message)

2.格式化字符串

"""
语法:包含格式占位符的字符串 % (数据1,数据2,...)
格式占位符:
%s - 字符串占位符(在Python中可以给任何数据占位)
%d - 整数占位符
%f - 浮点数占位符
%.Nf - 保留N个小数占位符
"""
# 1)%s可以给任何数据类型的数据占位
str1 = '%s嘻嘻嘻嘻'%([10, 20])
print(str1)
# 2)%d可以给任何能转换成数字的数据占位
str1 = '%d - xxxx'%5
print(str1) # 5-xxxx
str1 = '%d- xxxx'5.14
print(str1)  # 5.14-xxxx
# 3)%f可以给任何能转换成数字的数据占位
str1 = '%f-wwww'%3
print(str1)  # 3.000000-wwww
str1 = '%f-wwww'%3.14
print(str1) # 3.140000-wwww
str1 = '余额—— %.2f'%4364
print(str1) # 余额—— 4364.00

3f-string

"""
1)基本用法
语法:f'{任何有结果的表达式}' - 用表达式的结果来填充{}所在的位置
2)加参数
语法:f'{r任何有结果的表达式:参数}'
参数:.Nf - 控制小数位数
, - 逗号分隔银行金额的格式
.N% - 显示百分比,将数据转换成百分比,比值保留N位小数
X>N:将数据转换成长度为N的字符串,不够在前面用X对应的字符来填充
X<N:将数据转换成长度为N的字符串,不够在后面用X对应的字符来填充
"""
# 1)基本用法
str1 = f'是哈哈\n123'
print(str1) 
name = '小张'
age = 19
str1 = f'{name}今年{age}岁,{age*10}-{name[-1]}'
print(str1)
# 2)参数
# a. .Nf
money = 2305
str1 = f'金额:{money:.2f}元'
print(str1) # 金额:2305.00元  
# b. ,
money = 2349000
str1 = f'金额:{money:,}'
print(str1)  # 金额:2,349,000元
# c.%
rate = 0.5
str1 = f'市场占有率:{rate:.%}'
print(str1) # 市场占有率:50.000000%
str1 = f'市场占有率:{rate:.2%}'
print(str1)   # 市场占有率:50.00%
#d. X>N  X<N
# >、<  - 决定填充的时候是填在前面还是后面(开口朝那填那边)
# X  -  填充字符
# N - 目标长度
num = 23
str1 = f'Python2106{num:0>3}'
print(str1)  # Python2106023
3.字符串相关方法

1.字符串.capitalize() - 将字符串首字母转换为大写,其余转换为小写,如果首字母不是大写字母或者不是字母,则不会转

2.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'
"""
str1 = 'weixiaoqin'
print(str1.center(16,'*')) # '***weixiaoqin***'
print(str1.rjust(16, '*'))  # '******weixiaoqin'
print(str1.ljust(16,'*'))   # 'weixiaoqin******'
print(str1.zfill(16))   # '000000weixiaoqin'

3.find、index

"""
字符串1.find(字符串2)  - 获取字符串1中字符串2第一次出现的位置,返回0开始的下标值,如果字符串2不存在返回-1
字符串1.index(字符串2)  - 获取字符串1中字符串2第一次出现的位置,返回0开始的下标值;如果字符串2不存在就会报错
字符串1.find(字符串2,开始下边,结束下标)、字符串1.index(字符串2,开始下边,结束下标)index
"""
str1 = how are you? i am fine,thank you,and you?'
print(str1.fill('you'))  # 8
print(str1.index('you'))  # 8
print(str1.find('you', 9, len(str1)))  # 29
print(str1.index('you', 9, len(str1)))  # 29

5.isdigit、isnumeric

"""
字符串1.isdigit() - 判断是否是纯数字字符串(数字指0 ~ 9的数字字符)
字符串1.isnumeric() - 判断是否是纯数字字符串(数字指的是具有数字意义的字符)
"""
print('1234'.isdigit())   # True
print('1456'.isnumeric())  # True
print('23一十百千'.isdigit())  # False
print('23一十百千'.isnumeric()) # True

6.字符串.islower()、isupper

"""
字符串.islower() - 判断字符串是否是纯小写字母字符串
字符串.isupper() - 判断字符串是否是纯大写字母字符串
"""
print('weffd'.islower())   # True
print('WFDsdf'.islower())   # False
print('AHDHFJ'.isupper())   # True
print('ADSDcdd'.isupper())   # False

7.(重要) join

"""
字符串.join(序列) - 将序列中的元素用指定的字符串拼接成一个新的字符串
注意:序列中的元素必须是字符串
"""
result = ''.join('abc')
print(result)  # abc
result = ','.join('abc')
print(result)  # a,b,c
result = ''.join(['小明', '张三', '李四'])
print(result)  # 小明张三李四
result = '+'.join(['小明', '张三', '李四'])
print(result) # 小明+张三+李四
# # 练习1:将列表中的元素合并成一个字符串
# list1 = ['abc', 100, 12.5, True, 'hello'] -> 'abc10012.5Truehello'
list1 = ['abc', 100, 12.5, True, 'hello']
list2 = [str(x) for x in list1]
print(''.join(list2))

# 练习2:已知一个列表保存多个学生的分数,提取所有学生的姓名,
# 以一个字符串的形式返回
# [{'name':'张三', 'age': 18}, {'name':'小明', 'age': 20}, {'name':'小花', 'age': 30}]  -> '张三,小明,小花'
list1 = [{'name': '张三', 'age': 18}, {'name': '小明', 'age': 20}, {'name': '小花', 'age': 30}]
list2 = [x['name'] for x in list1]
print(','.join(list2))

8.strip、lstrip、rstrip

"""
字符串.strip() - 去掉字符串两端的空白
字符串.lstrip() - 去掉字符串左边的空白字符
字符串.rstrip() - 去掉字符串右边的空白字符
"""
str1 = '     \tabc 123\t'
result = str1.strip()
print('=',result,'=',sep='')
print('=',str1.rstrip(),'=',sep='')
print('=',str1.lstrip(),'=',sep='')

9.replace

"""
字符串1.replace(字符串2,字符串3) - 将字符串1中的字符串2替换成字符串3
字符串1.replace(字符串2,字符串3,N) - 将字符串1中所有的前N个字符串2替换成字符出3
"""
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', 2)
print(result)          # how are me? i am fine,thank me,and you?

10.maketrans、translate

"""
str.maketrans(字符串1,字符串2) - 创建一张字符串1和字符串2的字符对应表(字符串1和字符串2长度必须相同)
"""
str1 = 'how are you? i am fine,thank you,and you?'
table = str.maketrans('ain','你我他')
result = str1.translate(table)
print(result)  # how 你re you? 我 你m f我他e,th你他k you,你他d you?

11.rfind、rindex

"""
字符串.rfind(字符串2) - 获取字符串1中字符串2从后往前第一次出现的位置,返回0开始的下标值;如果字符串2不存在返回-1
"""
str1 = 'how are you? i am fine,thank you,and you?'
print(str1.rfind('you'))  # 37
print(str1.find('you'))  # 8
print(str1.rindex('you')) # 8
print(str1.index('you'))  # 37

12.splict

"""
字符串1.splict(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串进行切割,返回一个新的列表,切割点切完后将不存在
"""
str1 = 'how are you? i am fine,thank you,and you?'
result = str1.splict('an') 
print(result)  # ['how are you? i am fine,th', 'k you,', 'd you?']
result = str1.splict('you')
print(result)  #['how are ','? i am fine,thank ',',and ','?']

注意·:如果切割点在最前面或者最后面或者出现连续的切割点,结果会出现空串

str4 = 'amnayouaa==a123aklpa'
print(str4.splict('a')) # ['','mn','you','','==','123','klp','']
上一篇:回顾方法及加深


下一篇:二分题单