2021-9-27

字符串:r语法、相关方法、函数开头(2021-9-27)

一、r语法

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

str1 = r'C:\users\name\test\demo.py'
print(str1)

二、字符串格式化

name = '小明'
age = 18
message = 'xxx今年xx岁!'
message = name + '今年' + str(age) + '岁!'
print(message)                            # 小明今年18岁!

方法二:格式字符串

message = '%s今年%d岁!' % (name, age)
print(message)                            # 小明今年18岁!

方法三:f - string

message = f'{name}今年{age}岁!'
print(message)                            # 小明今年18岁!
1、格式字符串

语法:包含格式占位符字符串%(数据1, 数据2, …)
格式占位符:
%s - 字符串占位符
%d - 整数占位符
%f - 浮点数占位符(保留六位小数)
%.Nf - 浮点数保留N位小数

1)%s可以给任何类型的数据占位
str1 = '%sfnejwknf' % ('你好')
print(str1)                    # 你好fnejwknf
str1 = '%sxxx' % ([10, 20])
print(str1)                    # [10, 20]xxx
2%d可以给任何能转换成整数的数字数据占位
str1 = '%dxxxx' % 23
print(str1)                    # 23xxxx
3%f可以给任何能转换成浮点数的数字数据占位
str1 = '%fxxxx' % 3.43
print(str1)                    # 3.430000xxxx
str1 = '余额:%.2f' % 34325
print(str1)                    # 余额:34325.00
str1 = '%s今年%d岁,月薪:%.2f' % ('牛牛', 24, 10000)
print(str1)                    # 牛牛今年24岁,月薪:10000.00
2、f-string
1)基本用法

语法:f’{任何有结果的表达式}’

2)加参数

语法:f’{任何有结果的表达式:.Nf}’
参数:
.Nf - 控制小数位数
, - 逗号分隔银行金额的格式
.N% - 将数据转换成百分比,比值保留N位小数
X > N - 将数据转换成长度为N的字符串,不够在前面用X对应的字符来填充
X < N - 将数据转换成长度为N的字符串,不够在后面用X对应的字符来填充

1、基本用法
str1 = f'你好'
print(str1)                           # 你好
str1 = f'姓名:{name}\t年龄:{age}'
print(str1)                           # 姓名:小明  年龄:18
2、参数

a、.Nf

money = 2445
str1 = f'金额:{money:.2f}'
print(str1)                           # 金额:2445.00

b、,

money = 4355352
str1 = f'余额:{money:,}'
print(str1)                           # 余额:4,355,352

c、%

rate = 0.5
str1 = f'市场占有率:{rate:.2%}'
print(str1)                           # 市场占有率:50.00%

d、X > N X < N

X - 填充字符
X - 目标长度

num = 5
str1 = f'Python2106{num:0>3}'
print(str1)
str1 = f'Python2106{num:好<2}'
print(str1)

三、字符串相关方法

1、center、rjust、ljust、zfill

字符串.center(长度,填充字符)
字符串.rjust(长度,填充字符)
字符串.ljust(长度,填充字符)
字符串.zfill(长度) == 字符串.rjust(长度, ‘0’)

print('abc'.center(7, 's'))               # ssabcss
print('abc'.rjust(7, 's'))                # ssssabc
print('abc'.ljust(7, 's'))                # abcssss
print('abc'.zfill(7))                     # 0000abc
2、count

字符串1.count(字符串2) - 统计字符串1中字符串2出现的次数
字符串1.count(字符串2, 开始下标, 结束下标) - 在开始下标到结束下标(取不到,开区间)对应的范围内统计的字符串2出现的次数

str1 = 'abcdefjabdghal'
print(str1.count('a'))                    # 3
print(str1.count('a', 0, 9))              # 2
3、find、index、rfind、rindex

字符串1.find(字符串2) - 获取字符串1中字符串2第一次出现的位置,返回0开始的下标值,如果字符串2不存在返回-1
字符串1.index(字符串2) - 获取字符串1中字符串2第一次出现的位置,返回0开始的下标值,如果字符串2不存在报错
字符串1.find

str1 = 'abcdefjabdghal'
print(str1.find('g'))                     # 10
print(str1.index('g'))                    # 10
print(str1.find('g1'))                    # -1
print(str1.index('g1'))                 # 报错
print(str1.find('g', 0, 8))               # -1
print(str1.index('g', 0, 11))             # # 10
print(str1.rfind('g'))                     # 10
print(str1.rindex('g'))                    # 10
4、isdigit、isnumeric

字符串.isdigit() - 判断是否是纯数字字符串(数字指0~9的数字字符)
字符串.isnumeric() - 判断是否是纯数字字符串(数字指具有数字意义的字符)

print('3141515'.isdigit())                # True
print('1241415'.isnumeric())              # True
print('3141515一'.isdigit())              # False
print('3141515一百'.isnumeric())          # True
5、islower、isupper

字符串1.islower() - 判断字符串是否是纯小写字母字符串
字符.islower() - 判断是否是小写字母
字符串1.isupper() - 判断字符串是否是纯大写字母字符串
字符.isupper() - 判断是否是大写字母

print('safaf'.islower())                  # True
print('FSSFA'.isupper())                  # True
6、join

字符串.join(序列) - 将序列中的元素用指定的字符串拼接成一个新的字符串
注意:序列中的元素必须是字符串

result = '+'.join('abc')
print(result)                             # a+b+c
result = '+'.join(['小明', '牛牛', '瓦塔'])
print(result)                             # 小明+牛牛+瓦塔
result = '+'.join([2, 4])               # 报错

练习、将列表中的元素合并成一个字符串

['abc', 100, 12.5, True, 'hello']  -> 'abc10012.5Truehello'
list1 = ['abc', 100, 12.5, True, 'hello']
result = ''.join((str(x) for x in list1))
print(result)

练习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、rtrip

字符串.strip() - 去掉字符串两端的空白字符
字符串.lstrip() - 去掉字符串前面的空白
字符串.rstrip() - 去掉字符串后面的空白

str1 = '     \tabc 123  \n'
result = str1.strip()
print('==', result, '==', sep='')        # ==abc 123==
result = str1.lstrip()
print('==', result, '==', sep='')        # ==abc 123
										 # ==
result = str1.rstrip()
print('==', result, '==', sep='')        # ==      abc 123==
8、replace

字符串1.replace(字符串2, 字符串3) - 将字符串1中所有的字符串2替换成字符串3
字符串1.replace(字符串2, 字符串3, N) - 替换前N个

str1 = 'abcdefjabdghal'
result = str1.replace('a','u')
print(result)                            # ubcdefjubdghul
result = str1.replace('a','u',2)
print(result)                            # ubcdefjubdghal
9、maketrans、translate

str.maketrans(字符串1, 字符串2) - 创建一张字符串1和字符串2的字符对应表
字符串.translate(表)

table = str.maketrans('abc', '你好吗')
str1 = 'abcdefjabdghal'
result = str1.translate(table)
print(result)                            # 你好吗defj你好dgh你l

练习:将字符串中所有的阿拉伯数字都替换成对应的中文数字

'123木头人, 88'  ->  '一二三木头人, 八八'
table = str.maketrans('0123456789', '零一二三四五六七八九')
str1 = '123木头人, 88'
result = str1.translate(table)
print(result)
10、split

字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串进行切割

str1 = 'abcdefjabdghal'
result = str1.split('a')
print(result)                            # ['', 'bcdefj', 'bdgh', 'l']

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

四、认识函数和定义函数

1、认识函数
1)概念:函数就是对实现某以特定功能的代码的封装
2)函数的分类:

a、系统函数(系统造好的机器) - 有Python创建好的函数,例如:print、input、type、max …
b、自定义函数(自己造机器) - 由程序员自己创建的函数

2、定义函数(创建函数)

语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
a、def - 关键字;固定写法
b、函数名 - 由程序员自己命名
要求:是标识符;不能是关键字
规范:见名知义(看到函数名大概指定这个函数的功能是什么);
所有字母都小写,多个单词之间用下划线隔开;
不能使用系统函数名、类别、模块名。
c、() - 固定写法
d、形参列表 - 以’变量名1, 变量名2, 变量名3,…'格式存在,这的每个变量就是一个形参,如果不需要形参,括号里什么都不用写
形参是用来将函数外部的数据传递到函数内部。(可以理解成连接函数外部和函数内部的通道)
需不需要形参就看实现函数的功能需不需要额外的数据
e、: - 固定写法
f、函数说明文档 - 本质就是文档注释
g、函数体 - 和def保持一个缩进的一条或者多条语句;
函数体就是实现函数功能的代码

练习1:定义一个函数,求任意两个数的和

def sum1(num1, num2):
    print(num1 + num2)

练习2:定义一个函数,求N的阶乘

def factorial(n):
    result = 1
    for x in range(1, n + 1):
        result *= x
    print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值