驱动案例
居民身份证是每位居民的唯一身份标识,18位的居民身份证号的信息包含省、市、出生日期和性别等信息,
那么本节将介绍如何按需提取相应的信息。居民身份证是每位居民的唯一身份标识,18位的居民身份证号
的信息包含省、市、出生日期和性别等信息,那么本节将介绍如何按需提取相应的信息。
字符串
字符串切片
切片是截取目标对象中一部分的操作,语法格式如下:[起始:结束:步长]。
切片步长默认为1。注意,切片选取的区间属于左闭右开型,切下的子串包含起始位,但不包含结束位。
假设string的值为: ”python”
string[0:4:2] # 结果为pt
示例:
card = '420111199808120045'
# 切片
# 正向切片
birth = card[6:14] # 出生日期
# 反向切片
gender = card[-2] # 性别
print("出生日期:" + birth)
if int(gender)%2 == 0:
genderOut = "女"
else:
genderOut = "男"
print("性别:" + genderOut)
字符串替换
字符串的 replace() 方法可使用新的子串替换目标字符串中原有的子串,该方法的语法格式如下:
- old – 表示原有子串。
- new – 表示新的子串。
- count – 用于设定替换次数。
>>word= “我是小明,我今年28岁”
>>word.replace(‘我’, ‘他’)
‘他是小明,他今年28岁’
字符串分割
字符串的 split() 方法可以使用分隔符把字符串分割成序列,该方法的语法格式如下:
- sep – 分隔符,默认为空格。
- maxsplit – 用于设定分割次数。
>>word= “1 2 3 4 5”
>>word.split()
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
去除字符串两侧空格
字符串对象的strip()方法一般用于去除字符串两侧的空格,该方法的语法格式如下:
- chars – 要去除的字符,默认为空格。
>>> word= “ Strip ”
>>> word.strip() //去除空格
‘Strip’
>>> word= “**Strip**”
>>> word.strip(“*”) //去除*号
‘Strip’
字符串格式化输出
Python字符串可通过占位符、format() 方法和f-strings三种方式实现格式化输出。
占位符%
Python将一个带有格式符的字符串作为模板,使用该格式符为真实值预留位置,并说明真实值应该呈现的格式。
>>> name = "小柯"
>>> "你好,我叫%s" % name。
你好,我叫小柯。
一个字符串中可以同时包含多个占位符。
>>> name = "小柯"
>>> age = 20
>>> "你好,我叫%s,今年我%d岁了。" % (name, age)
你好!我叫小柯,今年我20岁了。
不同的占位符为不同类型的变量预留位置,常见的占位符如下表所示。
format()方法
format()方法也可以将字符串进行格式化输出,使用该方法无需再关注变量的类型。format()方法的基本使用格式如下:
>>> name = "小周"
>>> age = 19
>>> "你好!我的名字是{},今年我{}岁了。".format(name, age)
你好!我的名字是小周,今年我19岁了。
format()方法还可以对数字进行格式化,包括保留n位小数、数字补齐和显示百分比。
- 保留2位小数
>>> pi = 3.1415
>>> "{:.2f}".format(pi)
3.14
- 数字补齐
>>> num = 1
>>> "{:0>3d}".format(num)
001
- 显示百分比
>>> num = 0.1
>>> "{:.0%}".format(num)
10%
f-strings方法
f-strings在格式上以f或F引领字符串,字符串中使用{}标明被格式化的变量。(Python 3.6以上版本)
>>> address = '湖北 '
>>> f'欢迎来到{address}。'
欢迎来到湖北。
使用f-strings还可以将多个变量进行格式化输出。
>>> name = '陈聪'
>>> age = 19
>>> gender = '男'
>>> f'我的名字是{name},今年{age}岁了,我的性别是:{gender}。'
我的名字是陈聪,今年19岁了,我的性别是:男。
列表
列表是Python中最灵活的有序序列,它可以存储任意类型的元素。开发人员可以对列表中的元素进行添加、删除、修改等操作。
列表的创建
使用中括号创建列表
使用中括号“[]”创建列表时,只需要在 “[]” 中使用逗号分隔每个元素即可。
使用list()函数创建列表
使用list()函数创建列表时,需要给该函数传入一个可迭代类型的数据。
多学一招
可直接使用for循环的对象称为可迭代对象。
可以使用isinstance()函数判断一个对象是否为可迭代对象。
from collections import Iterable
print(isinstance([], Iterable)) #Ture
列表的访问
使用索引方式访问列表元素
使用索引可以获取列表中的指定元素。
list_demo01 = ["Java", "C#", "Python", "PHP"]
print(list_demo01[2]) # 访问列表中索引为2的元素
print(list_demo01[-1]) # 访问列表中索引为-1的元素
使用切片方式访问列表元素
使用切片可以截取列表中的部分元素,得到一个新列表。
li_one = ['p', 'y', 't', 'h', 'o', 'n']
print(li_one[2:]) # 获取列表中索引为2至末尾的元素
print(li_one[:3]) # 获取列表中索引为0至索引值为3的元素
print(li_one[:]) # 获取列表中的所有元素
列表的遍历
列表是一个可迭代对象,它可以通过for循环遍历元素。
list_one = ['小周', '小陈', '小柯', '小许']
for i in list_one:
print(f"嗨,{i}!今日促销,赶快来抢购吧!")
列表的排序
stor()方法
sort()方法能够对列表元素排序,该方法的语法格式如下:
- key – 表示指定的排序规则。
- reverse – 表示控制列表元素排序的方式。
- False 升序
- True 降序
sorted()方法
sorted()方法可以按升序方式排列列表元素,该方法的返回值是升序排列后的新列表。
li_one = [4, 3, 2, 1]
li_two = sorted(li_one)
print(li_one) # 原列表
print(li_two) # 排序后列表
//输出为[4,3,2,1] [1,2,3,4]
reverse()方法
reverse()方法用于将列表中的元素倒序排列,即把原列表中的元素从右至左依次排列存放。
li_one = ['a', 'b', 'c', 'd']
li_one.reverse()
print(li_one) //输出为['a','c','b','a']
案例代码
card = '420111199808120045'
# 2、字符串方法
# (1)简要介绍方法的使用
# (2)replace方法
# 遮盖身份证号的出生日期
card_hide = card.replace(card[6:14],'*'*8)
print(card_hide)
cardStr = '420111199808120045,420105197905230034,420107198504140023,42010320010726007X'
# (3)split方法
# 列表
week = ['Mon','Tus','Wed','Thur','Fri','Sat','Sun']
print(week[0])
week[1] = 2
print(week)
# 将身份证字符串分割成身份证列表
card_list = cardStr.split(',')
print(card_list)
for i in range(4):
card = card_list[i]
birth = card[6:14]
gender = card[-2]
print("出生日期:" + birth)
if int(gender)%2 == 0:
genderOut = "女"
else:
genderOut = "男"
print("性别:" + genderOut)
# (4)join方法
card_list = cardStr.split(',')
print(card_list)
for i in range(4):
card = card_list[i]
birth = card[6:14]
gender = card[-2]
year = birth[0:4]
month = birth[4:6]
day = birth[-2:]
birthList = [year,month,day]
birthNew = '-'.join(birthList)
print("出生日期:" + birthNew)
if int(gender)%2 == 0:
genderOut = "女"
else:
genderOut = "男"
print("性别:" + genderOut)
ardStr = '420111199808120045,420105197905230034,420107198504140023,42010320010726007X'
card_list = cardStr.split(',')
for i in range(4):
card = card_list[i]
birth = card[6:14]
gender = card[-2]
year = birth[0:4]
month = birth[4:6]
day = birth[-2:]
birthList = [year,month,day]
birthNew = '-'.join(birthList)
if int(gender)%2 == 0:
genderOut = "女"
else:
genderOut = "男"
print('身份证号:%s,出生日期:%s,性别:%s'%(card,birthNew,genderOut))
# 3、打印输出
# (1)%
# (2)format
print('身份证号:{0},出生日期:{1},性别:{2}'.format(card,birthNew,genderOut))
总结
本节课主要补充介绍了字符串的切片、替换和分割、字符串的格式化输出(%、format)、列表等。