先导知识:
- Python快速编程入门#学习笔记01# |第一章 :Python概述 (Python发展历程、开发工具、模块)
- Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)
- 第三章:程序流程控制 (分支语句(条件语句)、循环语句、跳转语句)
- Python快速编程入门#学习笔记02# |第十章 :Python计算生态与常用库(附.小猴子接香蕉、双人乒乓球小游戏源码)
开发环境及Git 的配置与排错:
学习目标
- 掌握
字符串的定义方法
- 掌握
字符串的格式化
- 熟悉 字符串的常见操作
4.1 字符串介绍
字符串是由字母
、符号
或者数字
组成的字符序列。
字符串是 Python 中最常见的数据类型。一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。
创建字符串 示例代码 :
# 认识字符串
# 字符串是 Python 中最常见的数据类型。一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。
# 字符串是由字母、符号或者数字组成的字符序列。
# 创建字符串
a = 'hello world'
b = "abcdefghijkmln"
print(type(a))
print(type(b))
# 注意:控制台显示输出结果为 <class'str'> ,即 数据类型为str(字符串)
# 1.1 字符串的特征
# 一对引号字符串
name1 = 'Tom' # 单引号
name2 = "Rose" # 双引号
# 三引号字符串
name3 = """" ROSE """
name4 = '''Tom'''
word = '''i am Tom ,
nice to meet you!'''
print(name1)
print(name2)
print(name3)
print(name4)
print(word)
注意:
1、控制台显示输出结果为 <class’str’> ,即 数据类型为str(字符串)
2、三引号字符串支持换行
思考: 如何创建字符串
I'm Tom
?
# word2 = 'I'm Tom'' # 如何按照英语语法中的格式书写I am 的缩写 I'M 中的撇
# 转义字符 换行符:\n ; 制表符:\t 为一个tab键(4个空格)的距离
word3 = "I'm Tom" # 第一种方法是用双引号,中间的那一撇' 就不会出现了
word2 = 'I\'m Tom' # 第二种方法是用转义字符 反斜杠 \
print(word3)
print(word2)
转义字符
一些普通字符与反斜杠组合后将失去原有意义,产生新的含义。类似这样的由“\
”和而成的、具有特殊意义的字符就是转义字符。转移字符通常用于表示一些无法显示的字符,例如空格、回车等。
从左上到右下的斜杠 \
称之为 反斜杠
;
从右上到左下的斜杠 /
称之为斜杠
- 换行符:
\n
; - 制表符:
\t
为一个tab键(4个空格)的距离
思考:
为什么变量输出行数print( )
输出会自动换行?
因为 print()
函数中 参数 end
:用于设定输出以书面结尾,默认值为换行符号 \n
。
# 输出默认换行
print("要输出的内容")
print("要输出的内容",end="\n") #
# 若不想输出换行
print("要输出的内容",end=" ")
示例代码:
a = 'hello'
b = 'world!'
c = 'helloworld!'
print(a) # 输出 变量a 中的字符串: hello
print(b) # 输出 变量b 中的字符串: world!
print(c) # 输出 变量c 中的字符串: helloworld!
print(a, end='') # 输出 hello 后 不换行
print(b, end='\n') # 输出 world 后 换行
print('\thelloworld') # 控制台输出前空4格
输出结果如下:
4.2 格式化字符串
使用%格式化字符串
字符串具有一种特殊的内置操作,它可以使用%
进行格式化。
format
表示一个字符串,该字符串中包含单个或多个为真实数据占位的格式符;values
表示单个或多个真实数据;%
代表执行格式化操作,即将format中的格式符替换为values。
不同的格式符为不同类型的数据预留位置,常见的格式符如下所示 :
在PyCharm 中代码演示%格式化操作,示例代码如下:
'''
1. 准备数据
2.格式化符号输出数据
'''
# 1. 今年我的年龄是x岁
# 2. 我的名字是x
# 3. 我的体重是x公斤
# 4. 我的学号是x
# 组合格式化内容
# 5. 我的姓名是x. 今年x岁了
# 6. 我的姓名是x. 今年x岁了. 体重x公斤. 学号是x
'''**********************分*割*线*********************************'''
# 1. 准备数据
age = 18
name = 'Tom'
weight = 60.5
stu_id = 1
# 2. 格式化符号输出数据
# 1. 今年我的年龄是x岁 -- 整数 %d
print("今年我的年龄是x岁")
print("今年我的年龄是%d岁" % age)
# 2. 我的名字是x -- 字符串 %s
print('我的名字是TOM')
print('我的名字是%s' % name)
# 3. 我的体重是x公斤 --浮点型 %f
print('我的体重是x公斤')
print('我的体重是%f' % weight) # 默认保留6位小数
print('我的体重是%.2f' % weight) # %与f之间 加.2 保留2位小数
# 小技巧:%.2f 表示小数点后显示的小数位
# 4. 我的学号是x
print('我的学号是x')
print('我的学号是%d' % stu_id)
print('我的学号是%06d' % stu_id)
# 小技巧:%06d 表示输出的整数显示位数,不足以0不全,超出当前位数则原样输出
# 组合格式化内容
# 5. 我的姓名是x. 今年x岁了
print('我的姓名是x, 今年x岁了')
print('我的姓名是%s,今年%d岁了' % (name, age))
# 6. 我的姓名是x. 今年x岁了. 体重x公斤. 学号是x
print('我的姓名是x,今年x岁了,体重x公斤,学号是x')
print('我的姓名是%s,今年%d岁了,体重%.2f公斤,学号是%d' % (name, age, weight, stu_id))
小技巧:
1、%.2f
表示小数点后显示的小数位
2、%06d
表示输出的整数显示位数,不足以0
不全,超出当前位数则原样输出
输出结果如下:
使用format()方法格式化字符串
虽然使用%
可以对字符串进行格式化,但是这种方式并不是很直观,一旦开发人员遗漏了替换数据或选择了不匹配的格式符,就会导致字符串格式化失败。为了能更直观、便捷地格式化字符串,Python为字符串提供了一个格式化方法format()
。
str
表示需要被格式化的字符串 变量,字符串中包含单个或多个为真实数据占位的符号{}
;values
表示单个或多个待替换的真实数据,多个数据之间以逗号
分隔。
方法一:字符串中可以包含多个{}
符号,字符串被格式化时Python解释器默认会按 从左到右的顺序
将{}逐个替换为真实的数据.
示例如下:
name = '张倩'
age = 25
string = "姓名:{} \n 年龄:{}" # 定义string字符串,{}位置为数据的占位符号 ;\n表示换行输出
print(string.format(name, age)) # name ,age 传递到对应的占位符{}中
输出结果如下:
方法二:字符串的{}中可以明确地指定 编号
,格式化字符串时解释器会按编号取 values
中相应位置的值替换{}
,values中元素的 索引从0
开始。
示例代码如下:
name = '张倩'
age = 25
# string = "姓名:{}\n年龄:{}" # 定义string字符串,{}位置为数据的占位符号
# print(string.format(name, age)) # name ,age 传递到对应的占位符{}中
# 编号
string = "姓名:{1}\n年龄:{0}"
print(string.format(age, name)) # 编号从0 开始 0 ,1,2,3
方法三:字符串的{}
中可以 指定名称
,字符串在被格式化时Python解释器会按真实数据绑定的名称替换{}中的变量。
示例代码:
# 指定名称
name = '张倩'
age = 25
weight = 65
string = "姓名:{name} \n 年龄:{age} \n 体重:{weight}kg"
print(string.format(name=name, weight=weight, age=age))
变量传递关系图:
推荐:使用f-string格式化字符串
f-string
提供了一种更为简洁的格式化字符串的方式,它在形式上以f
或F
引领字符串,在字符串中使用“{变量名}”
标明被替换的真实数据和其所在位置。
格式:f "{表达式}"
或者 F ‘{表达式}’
示例程序:
name = '张倩'
age = 25
print("我的名字是%s,我的年龄是%d" % (name, age))
print(f'我的名字是{name},我的年龄是{age}')
f '{表达式}'
格式化字符串是Python3.6 中新增的格式化方法,该方法相对于%
格式化字符串 和str. format()
格式化字符串更简单易读, 且高效,推荐大家使用此方法格式化字符串。
4.3 实训案例
实例训练1 :进制转换
十进制是实际应用中最常使用的计数方式,除此之外,还可以采用二进制、八进制或十六进制计数。
本实例要求编写代码,实现将用户输入的十进制整数转换为指定进制的功能。
Python进制转换函数及其功能说明:
函数 | 说明 |
---|---|
bin(x) | 将x转换为二进制数据 |
oct(x) | 将x转换为八进制数据 |
int(x) | 将x转换为十进制数据 |
hex(x) | 将x转换为十六进制 |
进制转换效果如下:
实例训练2:文本进度条
进度条一般以图形的方式显示已完成任务量和未完成任务量,并以动态文字的方式显示任务的完成度。
本实例要求编写程序,实现如图所示的文本进度条。
文本进度条效果如下:
4.4 字符串的常见操作
字符串的查找与替换
find()
字符串查找函数
语法格式:
字符串序列.find( 子串 , 开始位置下标, 结束位置下标)
注意:开始位置和结束位置的下标可以省略,表示在整个字符串序列中查找。
示例代码如下:
my_str = "c and java and python and c++ and php"
# find()
print(my_str.find("and")) # 查找 字符串my_str中的 'and', 返回查找到的第一个'and'的首字母的下标 2
print(my_str.find("and", 5, 30)) # 查找 字符串 my_str 中 5~30 之间的 'and' , 返回下标 11
print(my_str.find("ands")) # 查找 字符串 my_str 中的 "ands" , 若查找到返回对应的下标,若没有查找到 返回 -1
运行程序,输出结果如下:
index()
字符串查找函数
语法格式:
字符串序列. index ( 子串 , 开始位置下标, 结束位置下标)
示例代码如下:
my_str = "c and java and python and c++ and php"
# index() 字符串查找
print(my_str.index("and")) # 查找 字符串my_str中的 'and', 返回查找到的第一个'and'的首字母的下标 2
print(my_str.index("and", 5, 30)) # 查找 字符串 my_str 中 5~30 之间的 'and' , 返回下标 11
print(my_str.index("ands")) # 查找 字符串 my_str 中的 "ands" , 若没有查找到 报错
输出结果如下:
count()
统计字符串函数
作用:返回某个子串在字符串中出现的次数。
示例代码如下:
my_str = "c and java and python and c++ and php"
# count() 计数函数
print(my_str.count("and")) # 查找 字符串my_str中的 'and', 返回查找到的第一个'and'的首字母的下标 2
print(my_str.count("and", 5, 37)) # 查找 字符串 my_str 中 5~30 之间的 'and' , 返回下标 11
print(my_str.count("ands")) # 查找 字符串 my_str 中的 "ands" , 若没有查找到 报错
输出结果如下:
rfind()
:和find()
功能相同,但是查找方向为右侧开始rindex()
: 和index()
功能相同,但时查找方向为右侧开始count()
: 返回某个子串在字符串中出现的 次数(计数)
replace()
字符串替换函数
语法: 字符串序列.replace(旧子串, 新子串, 替换次数 )
注意:替换次数可以省略,默认为字符串序列中所有的子串出现次数
`
示例代码:
# replace() 字符串替换函数
# 语法: 字符串序列.replace(旧子串, 新子串, 替换次数 )
# 注意:替换次数可以省略,默认为字符串序列中所有的子串出现次数
# 示例代码
my_str = "c and java and python and c++ and php"
new_str1 = my_str.replace("and", "or") # 替换字符串my_str中所有的 "and" 为 "or", 并将replace返回的新字符串赋值给new_str1
new_str2 = my_str.replace("and", "or", 1) # 替换字符串my_str中的第一个"and" 为"or", 并将replace返回的新字符串赋值给new_str2
print(my_str) # 打印输出原来的字符串
print(new_str1)
print(new_str2)
输出结果:
总 结:
1、 字符串是不可变数据类型
2、数据是否可以改变划分为两大类:可变类型(列表……)和不可变类型(字符串)
字符串的分隔与拼接
split()
字符串分割函数
语法: 字符串序列.split("分割字符" ,分割次数)
示例代码:
# split() 字符串分割函数. 返回一个列表,丢失分割字符
# 语法:字符串序列.split("分割字符" ,分割次数)
my_str = "c and java and python and c++ and php"
ls1 = my_str.split("and")
print(ls1)
ls2 = my_str.split("and", 3)
print(ls2)
输出结果:
join()
字符串合并拼接函数
示例代码:
功能:合并拼接列表里面的字符串数据为一个大字符串
语法格式:字符或子串. join(多字符串组成的序列)
# join() --合并拼接列表里面的字符串数据为一个大字符串
my_list = ['aa', 'bb', 'cc', 'dd']
new_str = '+++'.join(my_list)
print(my_list)
print(new_str)
输出结果:
删除字符串的指定字符
strip()
字符串删除函数
-
lstrip( )
:删除字符串左侧空白字符 -
rstrip( )
:删除字符串右侧空白字符 -
strip( )
: 删除字符串两侧空白字符
示例代码:
my_str = " this is a test! "
print(my_str)
# lstrip() -- 删除左侧空白字符
new_str1 = my_str.lstrip()
print(new_str1)
# rstrip() -- 删除右侧空白字符
new_str2 = my_str.rstrip()
print(new_str2)
# strip()
new_str3 = my_str.strip()
print(new_str3)
输出结果:
字符串大小写转换
capitalize()
、 title()
、lower()
和upper()
字符串大小写转换函数
示例代码:
my_str = "this IS a test!"
print(my_str)
# capitalize() -- 将字符串第一个字符转换成大写
print(my_str.capitalize())
# title() -- 将字符串每个单词首字母转换成大写
print(my_str.title())
# lower() -- 将字符串中的大写转换成小写
print(my_str.lower())
# upper() -- 将字符串中的小写转换成大写
print(my_str.upper())
输出结果:
字符串对齐
ljust()
、rjust
和 center
左对齐,右对齐和居中
语法格式: 字符串序列.ljust(长度,填充字符)
示例代码:
# just() 字符串对齐函数
# 语法格式: 字符串序列.[l,r,c]just(长度,填充字符)
my_str = " hello "
# ljust() -- 左对齐
print(my_str.ljust(10)) # 打印输出左对齐的"hello" ,空白处以空格填充
# rjust() -- 右对齐
print(my_str.rjust(10, '_')) # 右对齐,空白处用'_' 填充
# center() -- 居中对齐
print(my_str.center(10,'_'))
输出结果:
4.5 实训案例
实训案例1:敏感词替换
敏感词通常是指带有敏感政治倾向、暴力倾向、不健康色彩的词或不文明的词语,对于文章中出现的敏感词常用的处理方法是使用特殊符号(如“*
”)对敏感词进行替换。
本实例要求编写代码,实现具有替换敏感词功能的程序。
实训案例2:文字排版工具
文字排版工具是一款强大的文章自动排版工具,它会将文字按现代汉语习惯及发表出版要求进行规范编排。文字排版工具一般具备删除空格、英文标点替换、英文单词大写功能。
本实例要求编写代码,实现具有上述功能的文字排版工具。
划重点
1、《Python快速入门》配套视频、源代码、习题、教学课件等资源8G学习资料百度网盘下载链接>>点击这里 << ,获取密码>>点击这里<<。
2、本章示例代码>>点击这里<<