一、字符串
1、字符串的定义
字符串是 Python 中最常用的数据类型。我们⼀般使用引号来创建字符串。创建字符串很简单,只要为变量分配⼀个值即可。
①.使用单引号(' ')或使用双引号(" "):
my_string1 = '你好, 杨某'
my_string2 = "你好, 杨某, 吃了没"
②.使用三引号(''' ''' 或 """ """):
单行三引号:
my_string3 = '''兄弟, 你变了'''
多行三引号,允许字符串跨越多行:
my_string4 = """
不是,
哥们?
"""
③.使用反斜杠(\)进行转义,以包含特殊字符或引号:
my_string5 = '吃了没, 兄弟' # 包含单引号
my_string6 = "杨某, 你好" # 包含双引号
2、字符串的输入
在Python中,获取用户输入的字符串通常使用内置函数 input()
。这个函数会暂停程序的执行,等待用户在控制台输入文本,直到用户按下回车键(Enter)。用户输入的内容会被当作字符串处理,并返回给程序。
# 提示用户输入
user_input = input("请输入您的文本:")
# 输出用户输入的内容
print("您输入的内容是:" + user_input)
在这个例子中,程序会显示提示信息 "请输入一些文本:",然后等待用户输入。用户输入的文本在按下回车键后会被赋值给变量 user_input
,并且随后被打印出来。
3、字符串的输出
到目前为止我们已遇到过两种写入值的方式: 表达式语句和 print() 函数。对输出格式的控制不只是打印空格分隔的值,还需要更多方式。格式化输出包括以下几种方法。
基本输出:
# 输出一个简单的字符串
print("你好,杨某!")
使用 格式化字符串字面值 ,要在字符串开头的引号/三引号前添加 f
或 F
。在这种字符串中,可以在 {
和 }
字符之间输入引用的变量,或字面值的 Python 表达式。
例如:
name = "杨某"
age = 20
print(f"我的名字是{name},我今年{age}岁。")
str.format()
方法是Python中一个非常强大的字符串格式化工具,它允许你构造字符串,并在其中嵌入值。这个方法提供了一种灵活的方式来替换字符串中的占位符(大括号 {}
)为变量的值。
例如:
print('你好我是{}今年"{}!"'.format('杨某', 20))
% 运算符 (求余) 也可被用于字符串格式化。 给定 format % values
(其中 format 是一个字符串),则 format 中的 %
转换占位符将以 values 中的零个或多个元素来替换。 此操作通常称为字符串插值。
例如:
name = "杨某"
age = 20
print("我的名字是%s,我今年%d岁。" % (name, age))
二、字符串切片
所谓的切片是指对操作的对象 截取 其中⼀部分的操作。字符串、列表、元组都支持切片操作。
1、基本语法
string[start:end:step]
序列名称[开始位置下标:结束位置下标:步⻓(步阶)]
numstr = '0123456789'
numstr[0:3:1] # 012 => range⽅法⾮常类似,步⻓:每次前进1步
numstr[0:3:2] # 02 => 每次前进2步
步⻓可以为负数,正数代表从左向右截取,负数代表从右向左截取
① 不包含结束位置下标对应的数据, 正负整数均可;
② 步长是选取间隔,正负整数均可,正数从左向右,负数从右向左。默认步长为1。
正索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
负索引 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
案例1:
numstr = '0123456789'
# 1、从2到5开始切⽚,步⻓为1
print(numstr[2:5:1])
print(numstr[2:5])
# 2、只有结尾的字符串切⽚:代表从索引为0开始,截取到索引为5的位置(不包含索引为5的数据)
print(numstr[:5])
# 3、只有开头的字符串切⽚:代表从起始位置开始,已知截取到字符串的结尾
print(numstr[1:])
# 4、获取或拷⻉整个字符串
print(numstr[:])
# 5、调整步阶:类似求偶数
print(numstr[::2])
# 6、把步阶设置为负整数:类似字符串翻转
print(numstr[::-1])
# 7、起始位置与结束位置都是负数
print(numstr[-4:-1])
# 8、结束字符为负数,如截取012345678
print(numstr[:-1])
案例2:给定⼀个图片的名称为"headerImg.png",使用Python方法获取这个图片的名称(headerImg)以 及这个图片的后缀(.png)。
分析:
① 建议先获取点号的位置
② 从开头切片到点号位置,得到的就是文件的名称
③ 从点号开始切片,一直到文件的结尾,则得到的就是文件的后缀
filename = 'headerImg'
# 获取点号的索引下标
index = 8
# 使⽤切⽚截取⽂件的⽂件
name = filename[:index]
print(f'上传⽂件的名称:{name}')
# 使⽤切⽚截取⽂件的后缀
postfix = filename[index:]
print(f'上传⽂件的后缀:{postfix}')
2、字符串的操作方法(内置)
字符串的查找方法
方法名 | 作用 |
in | 检查字符串是否包含指定子字符串,返回布尔值(True/False)。 |
not in | 检查字符串是否不包含指定子字符串,返回布尔值(True/False)。 |
find() | 查找子字符串在字符串中第一次出现的索引,未找到返回-1。 |
index() | 查找子字符串在字符串中第一次出现的索引,未找到抛出ValueError 。 |
in
和 not in
操作符:
s = "Hello, World!"
# 检查子字符串是否在s中
if "World" in s:
print("找到子字符串")
else:
print("未找到子字符串")
# 检查子字符串是否不在s中
if "Python" not in s:
print("未找到子字符串")
find()
方法:
s = "Hello, World!"
index = s.find("World")
if index != -1:
print(f"子字符串 'World' 在索引 {index} 处找到")
else:
print("未找到子字符串")
index()
方法:
s = "Hello, World!"
try:
index = s.index("World")
print(f"子字符串 'World' 在索引 {index} 处找到")
except ValueError:
print("未找到子字符串")
字符串的修改方法
方法名 | 作用 |
replace() | 替换字符串中的某些子字符串。 |
split() | 按照指定的分隔符分割字符串,返回一个列表。 |
title() | 将字符串的每个单词首字母转换为大写。 |
upper()与lower() | 返回全部大写或小写的字符串。 |
replace()方法:
str1 = 'hello linux and hello linux'
# 把字符串中所有linux字符替换为python
print(str1.replace('linux', 'python'))
# 把字符串中的第⼀个linux进⾏替换为python
print(str1.replace('linux', 'python', 1))
# 把and字符串替换为&&
print(str1.replace('and', '&&'))
split()方法:
s = "Hello, World!"
parts = s.split(", ") # ["Hello", "World!"]
modified_string = parts[0] + ", " + parts[1].upper() # 输出"Hello, WORLD!"
title()方法:
s = "hello, world!"
modified_string = s.title() # 输出"Hello, World!"
三、列表
为什么需要列表?
1、列表允许你存储有序的数据集合,这意味着元素添加到列表中的顺序会被保留。
2、列表支持通过索引进行快速随机访问,这意味着你可以在常数时间内访问列表中的任何元素。
3、列表可以包含不同类型的元素,这意味着一个列表中可以同时存储整数、字符串、甚至其他列表。
4、列表允许元素重复,这在处理某些类型的数据时非常有用,例如计数或存储具有多个相同项的集合。
5、列表是可变的,这意味着你可以修改列表的内容,这在很多情况下是非常有用的,比如当你需要根据程序逻辑更新数据时。
列表的定义
列表序列名称 = [列表中的元素1, 列表中的元素2, 列表中的元素3, ...]
list1 = ['apple', 'banana', 'pineapple']
# list列表类型⽀持直接打印
print(list1)
# 打印列表的数据类型
print(type(list1)) # <class 'list'>
列表的操作
根据列表的的特点,我们可以对列表进行的操作有:增、删、改、查。
增操作
方法名 | 作用 |
append() | 增加指定数据到列表中 |
extend() | 列表结尾追加数据,如果数据是⼀个序列, 则将这个序列的数据逐⼀添加到列表 |
insert() | 指定位置新增数据 |
append()方法
代码示例
names = ['孙悟空', '唐僧', '猪⼋戒']
# 在列表的尾部追加⼀个元素"沙僧"
names.append('沙僧')
# 打印列表
print(names)
注意:列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型 数据。
extend()方法
代码示例
list1 = ['Tom', 'Rose', 'Jack']
# 1、使⽤extend⽅法追加元素"Jennify"
names.extend("Jennify")
print(names)
# 2、建议:使⽤extend⽅法两个列表进⾏合并
list2 = ['Hack', 'Jennify']
list1.extend(list2)
print(list1)
总结:extend方法比较适合于两个列表进行元素的合并操作。
insert()方法
代码示例
names = ['薛宝钗', '林黛⽟']
# 在薛宝钗和林黛⽟之间,插⼊⼀个新元素"贾宝⽟"
names.insert(1, '贾宝⽟')
print(names)
注意:使用insert()方法时需要注意列表中元素的下标。
删操作
方法名 | 作用 |
del 列表[索引] | 删除列表中的某个元素 |
pop() | 删除指定下标的数据(默认为最后⼀个),并返回该数据 |
remove() | 移除列表中某个数据的第⼀个匹配项。 |
del 列表[索引](指定删除列表中的元素)
代码示例
names = ['Tom', 'Rose', 'Jack', 'Jennify']
# 删除Rose
del names[1]
# 打印列表
print(names)
pop()方法
代码示例
names = ['貂蝉', '吕布', '董卓']
del_name = names.pop()
# 或
# del_name = names.pop(1)
print(del_name)
print(names)
作用:删除指定下标的元素,如果不填写下标,默认删除最后一个。其返回结果:就是删除的这个元素。
remove()方法
代码示例
fruit = ['apple', 'banana', 'pineapple']
fruit.remove('banana')
print(fruit)
作用:删除匹配的元素
改操作
方法名 | 作用 |
列表[索引] = 修改后的值 | 修改列表中的某个元素 |
reverse() | 将数据序列进行倒叙排列 |
代码示例
list1 = ['貂蝉', '⼤乔', '⼩乔', '⼋戒']
# 修改列表中的元素
list1[3] = '周瑜'
print(list1)
list2 = [1, 2, 3, 4, 5, 6]
list2.reverse()
print(list2)
查操作
方法名 | 作用 |
index() | 指定数据所在位置的下标 |
count() | 统计指定数据在当前列表中出现的次数 |
in | 判断指定数据在某个列表序列,如果在返回True,否则返回False |
not in | 判断指定数据不在某个列表序列, 如果不在返回True,否则返回 False |
代码示例
# 1、查找某个元素在列表中出现的位置(索引下标)
list1 = ['apple', 'banana', 'pineapple']
print(list1.index('apple')) # 0
# print(list1.index('peach')) # 报错
# 2、count()⽅法:统计元素在列表中出现的次数
list2 = ['刘备', '关⽻', '张⻜', '关⽻', '赵云']
# 统计⼀下关⽻这个元素在列表中出现的次数
print(list2.count('关⽻'))
# 3、in⽅法和not in⽅法(⿊名单系统)
list3 = ['192.168.1.15', '10.1.1.100', '172.35.46.128']
if '10.1.1.100' in list3:
print('⿊名单IP,禁⽌访问')
else:
print('正常IP,访问站点信息')
列表的循环遍历
while循环
list1 = ['貂蝉', '⼤乔', '⼩乔']
# 定义计数器
i = 0
# 编写循环条件
while i < len(list1):
print(list1[i])
# 更新计数器
i += 1
for循环
list1 = ['貂蝉', '⼤乔', '⼩乔']
for i in list1:
print(i)