驱动案例

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

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

  1. 案例驱动式Python学习笔记【第一篇】便捷水果店

    前言 后续的此系列博文用于记录案例式Python学习笔记记录,供本人和感兴趣的小伙伴一起学习!!人生苦短,我学Python! 驱动案例 便捷水果店:请为水果店开发一个收银的小程序,已知水果单价和购买重 ...

  2. 案例驱动式Python学习笔记【第六篇】电子宠物

    驱动案例 设计多只电子宠物,它们具有名字,性别,能力,体重等属性,可以完成吃饭.运动.显示状态的动作. 类与对象 通过类(模板)可以生产多个具有相同属性和方法(行为)的对象,对象是类的实例化 clas ...

  3. Python 学习笔记 第三篇 Python实现网易云评论网页爬虫+词云展示 (Pycharm+Mysql)

    初始条件,具体可见我的其他文章. 1.安装Python.Python 学习笔记 第一篇 Python的安装与配置 2.安装Pycharm,并导入第三方包.Python 学习笔记 第二篇 Python ...

  4. python通讯录运用的知识点_案例驱动式Python学习--通讯录存取

    驱动案例 通讯录:要求打印出企业全部十名员工通讯录.(要求有文件相关操作) 内置函数 自定义函数 函数指被封装起来的.实现某种功能的一段代码.Python安装包.标准库中自带的函数统称为内置函数,用户 ...

  5. RCNN学习笔记——第三篇: 实现FRCNN网络训练、评价与预测(附全部源码)

    RCNN学习笔记--第三篇: 实现FRCNN网络训练.评价与预测(附全部源码) 本文是个人根据B站大佬Bubbliiiing的FRCNN系列视频同步完成FRCNN训练,记录心得和遇见的问题. 关于RC ...

  6. Python学习笔记(三) Python基础

    (二)python基础 python基础 自然语言与编程语言有所不同 ,自然语言可以在不同的情景下有不同的含义或解释 , 但这是编程语言是坚决杜绝的 . 编程语言应有的性能要求有:一致性 . 无二义性 ...

  7. 流畅的python学习笔记(三):数据结构(3:文本和字节序列)

    文本和字节序列 大纲 1. 字符问题 2. 字节概要 2.1 结构体和内存视图 3. 基本的编解码器 4. 了解编解码问题 4.1 处理UnicodeEncodeError 4.2 处理Unicode ...

  8. 流畅的python学习笔记(三):数据结构(1)

    文章目录 概述 序列 列表推导和生成器表达式 列表推导和可读性 列表推导同filter和map的比较 笛卡尔积 生成器表达式 元组不仅仅是不可变的列表 把元组用作记录 元组拆包 嵌套元组拆包 具名元组 ...

  9. python学习笔记(三)—— 序列类型及方法(列表、元组、字符串)

    所谓序列,指的是一块可以存放多个值的连续内存空间,可以通过每个值所在的编号(索引)去访问他们 目录 列表(可变序列) 元组(不可变序列) 字符串(不可变) 转义 字符串拼接 列表(可变序列) 列表 方 ...

最新文章

  1. js校验复选框(多选按钮)是否被选中的方法
  2. iOS-获取当前时间的年、月、日、时、分、秒
  3. 运行Python程序的2种方式
  4. 支付宝:“答答星球”小程序上线20天累计参与人数超2亿
  5. install openni2 on ubuntu
  6. MySQL-在字段上使用函数不会走索引的原因是什么?
  7. 串口与并口有什么区别?
  8. NetBIOS协议和NBNS协议
  9. 前端开发工程师就业时应该选择大公司还是小公司?这是我听过最靠谱的答案!
  10. 中国未来可能面临的第四次失业浪潮
  11. openCamera的 hal 端流程
  12. JTAG/C2 接口定义
  13. JVM 年轻代和年老代 大小设置
  14. L2+ 概念要火!英伟达和英特尔都释放了什么信号?| CES 2019
  15. 学术期刊的 LaTeX整理合集(持续更新中)
  16. Google将Linux客户端研发的主力放到中国
  17. 2021宿迁所有高中高考成绩查询,宿迁市“赫赫有名”的4所高中,高考成绩说话,不愧是211后援团...
  18. 电子数据证据的证据能力及证明力研究
  19. 计算机教室设备安全管理制度,计算机教室和多媒体教室安全管理制度
  20. (林大oj1276)

热门文章

  1. 连接MySQL错误:Can#39;t connect to MySQL server (10060)
  2. inventor 波纹阵列_Inventor技巧之草图驱动的阵列
  3. 计算机网络-网络应用(上)
  4. 交换机loopback口
  5. 小地鼠偷吃萝卜(模板)
  6. Java高并发程序设计(三)——JDK并发包(一)
  7. 如何学习图像处理(计算机视觉)的一些思考与分享
  8. iPhone尺寸规格
  9. Emgucv图像处理二
  10. 【JY】YJK前处理参数详解及常见问题分析(一)