案例驱动式Python学习笔记【第三篇】居民身份证信息提取

驱动案例

居民身份证是每位居民的唯一身份标识,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)列表等。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/k1507157/article/details/110236957