Python自动化开发 - 字符串, 列表, 元组, 字典和和文件操作
| 一、字符串 |
特性:字符串本身不可修改,除非字符串变量重新赋值。Python3中所有字符串都是Unicode字符串,支持中文。
|
>>> name = "Jonathan" >>> name = "Jonathan" + "Ni" >>>print(name) Jonathan Ni # name 被重新赋值,并不是改变原先字符串 "Joanthan" |
字符串运算符
实例 a = "Hello"; b = "Python"
| 操作符 | 描述 | 实例 |
| + | 字符串连接 | a + b输出结果 HelloPython |
| [] | 通过索引获取字符串中字符 | a[1]输出结果 e |
| [:] | 截取字符串中一部分 | a[0:2]输出结果 He |
| in | 成员运算符 - 如果字符串中包含给定的字符返回 True | H in a 输出结果 True |
| not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | N not a 输出结果 True |
| % | 格式化字符串 | “%s World!"%a 输出结果 Hello World! |
字符常用方法
|
print("jonathan".capitalize()) # 首字母大写,其余小写 print("JonaThan".casefold()) # 转为小写字符,lower() 只是ASCII编码大写转小写 print("Jonathan".center(20, "*")) # 居中,两侧填充指定字符到指定宽度 print("Jonathan".count("an")) # 统计指定字符出现次数 print("Jonathan".endswith("a")) # 判断是否以指定字符结尾 print("Joanthan".startswith("Jo")) # 判断是否以指定字符开始 print("Jonathan".replace("J", "j")) # 替换指定字符 msg = "My name is {) # 格式化 print(msg) |
| 二、列表 |
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
更改本身与字符串对比分析
定义列表
names = []
通过下标访问列表中的元素,下标从0开始计数
|
names[0] = "Jonathan" # 修改元素 names.append("Jim") >>> ["Jonathan", "Alex", "Tom", "Catherine", "Jim"] # 在列表最后附件元素 names.insert(2, "Linda") >>> ["Jonathan", "Alex", "Linda", "Tom", "Catherine", "Jim"] # 在下标为2的地方插入元素,其他元素后移动 names.remove("Linda") >>> ["Jonathan", "Alex", "Tom", "Catherine", "Jim"] # 删除第一个检索到的元素 del names[4] >>> ["Jonathan", "Alex", "Tom", "Catherine"] # 按下标删除元素 names.index( # 返回下标 names.sort() >>> ["Alex", "Catherine", "Jonathan", "Tom"] # 按照ASCII正序排列 names.reverse() >>> ["Tom", "Jonathan", "Catherine", "Alex"] # 元素反转 names.count("Tom") >>> 1 # 返回出现次数 |
| 三、元组 |
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
names = ()
它只有2个方法,一个是count,一个是index
| 四、字典 |
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
构成:字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
|
d = { key1 : value1, key2 : value2 } |
特性:
1) 键必须是唯一的,但值则不必
2) 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
3) 字典是无序的
4)字典是另一种可变容器模型,且可存储任意类型对象
5) 字典内部构成 Hash算法,查询效率高
使用字典:
|
import copy # 定义字典 names = { "stu1101": "001", "stu1102": "002", "stu1103": "003" } # 查找 print(names) # 字典无序,每次输出结果顺序不同 print(names["stu1101"]) # 把相应的键放入方括弧 print(names["stu1104"]) # 不存在该键名时,返回KeyError: 'stu1104' print(names.get("stu1104","000")) # 不存在该键名时,返回默认值 '000' # 修改,定位键名则修改,无该键值则添加该键值对 names["stu1101"] = { "name": "Jack", , "address": "Beijing China" } print(names["stu1101"]["name"] # 删除 pop() del print(names.pop(names["1103"]) # 删除键名为"1103"的键值对元素,并返回该值 "003" del names["stu1102"] # 复制 credit_card1 = { "name": "Jonathan" "card": { "id": "1101",
} } credit_card2 = credit_card1 # 前复制 credit_card3 = copy.deepcopy(credit_card2) #深复制 credit_card2["name"] = "Rose" # credit_card2的"name"更新为"Rose",credit_card1的"name"保持不变 credit_card3["name"] = "Linda" # credit_card2的"name"更新为"Linda",credit_card1的"name"保持不变 credit_card1[ # credit_card1的"balance" 与 credit_card2的"balance" 同步变化 credit_card2[ # credit_card2的"balance" 与 credit_card1的"balance" 同步变化 credit_card3[ # credit_card3的"balance" 与 credit_card1的"balance" 是两份不同的变量空间 |
| 五、文件操作 |
1、IO简介
IO - Input/Output,也就是输入和输出。程序和运行时数据都是在内存中驻留,由CPU来执行,通常需要与磁盘、网络等进行数据交换,就
需要IO接口。
IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单向流动。
Input Stream就是数据从外面(磁盘、网络)流进内存,Output Stream就是数据从内存流到外面去。对于浏览网页来说,
浏览器和服务器之间至少需要建立两根水管,才可以既能发数据,又能收数据。
由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题。比如要把100M的数据写入磁盘,
CPU输出100M的数据只需要0.01秒,可是磁盘要接收这100M数据可能需要10秒,有两种办法可以解决:
第一种是CPU等着,程序暂停执行后续代码,等100M的数据在10秒后写入磁盘,再接着往下执行,这种模式称为同步IO;
另一种是CPU不等待,只是告诉磁盘写入,后续代码可以立刻接着执行,这种模式称为异步IO
总结:
使用异步IO来编写程序性能会远远高于同步IO,但是异步IO的缺点是编程模型复杂。
操作IO的能力都是由操作系统提供的,每一种编程语言都会把操作系统提供的低级C接口封装起来方便使用,Python也是。
2、文件操作
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,
所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),
- 通过操作系统提供的接口从这个文件对象中读取数据(读文件)
- 把数据写入这个文件对象(写文件)
对文件操作流程
1) 打开文件,得到文件句柄并赋值给一个变量
2) 通过句柄对文件进行操作
3) 关闭文件
|
f = open("lyrics", encoding="utf-8", mode="r") # 打开文件 first_line = f.readline() # 读一行 print("first line:",first_line) # 打印该行 print("我是分割线".center(,"*")) # 读取剩下的所有内容,文件大时不要用 data = f.read() # 打印文件 print(data) f.close() # 关闭文件 |
打开文件的模式有:
r, 只读模式 (默认)
w,只写模式 (不可读;不存在则创建;存在则删除内容)
a,追加模式 (可读; 不存在则创建;存在则只追加内容)
"+" 表示可以同时读写某个文件
r+,可读写文件。(可读;可写;可追加)
w+,写读
a+,同a
"b"表示处理二进制文件 (如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
rb、wb、ab
Python自动化开发 - 字符串, 列表, 元组, 字典和和文件操作的更多相关文章
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
- python字符串/列表/元组/字典之间的相互转换(5)
一.字符串str与列表list 1.字符串转列表 字符串转为列表list,可以使用str.split()方法,split方法是在字符串中对指定字符进行切片,并返回一个列表,示例代码如下: # !usr ...
- python字符串 列表 元组 字典相关操作函数总结
1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...
- python 字符串,列表,元组,字典相互转换
1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} 字典转为字符串,返回:<type 'str'> {'age': 7, 'n ...
- python基础之02列表/元组/字典/set集合
python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...
- Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
代码 bol = True # 布尔 num = 100000000; # 数字 str = "fangbei"; # 字符串 str_cn = u"你好,方倍" ...
- Python 整数 长整数 浮点数 字符串 列表 元组 字典的各种方法
对于Python, 一切事物都是对象,对象基于类创建!! 注:查看对象相关成员var,type, dir 一.整数 如: 18.73.84 每一个整数都具备如下需要知道的功能: def bit_len ...
- Python笔记【5】_字符串&列表&元组&字典之间转换学习
#!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 #数据类型之间的转换 Str='www.baid ...
随机推荐
- java性能优化之for循环
完成同样的功能,用不同的代码来实现,性能上可能会有比较大的差别,所以对于一些性能敏感的模块来说,对代码进行一定的优化还是很有必要的.今天就来说一下java代码优化的事情,今天主要聊一下对于for(wh ...
- ark是什么
https://github.com/QuadHex/ARK/releases 0.8.0版本网络使用evpp 调用 https://www.jianshu.com/p/9f09928829ba
- JDK 之 Java Bean 内省机制
JDK 之 Java Bean 内省机制 JDK 规范目录(https://www.cnblogs.com/binarylei/p/10200503.html) JavaBean 是一种特殊的 Jav ...
- 关键词提取_textbank
脱离语料库,仅对单篇文档提取 (1) pageRank算法:有向无权,平均分配贡献度 基本思路: 链接数量:一个网页越被其他的网页链接,说明这个网页越重要 链接质量:一个网页被一个越高权值的网页链接, ...
- note:debugging requires the debug connect session system privilege
note:debugging requires the debug connect session system privilege 解决方案: 原因是用户权限不够,使用以下命令授予权限: GRANT ...
- docker使用自定义镜像zabbix服务
一.关闭firewall,永久关闭,使用iptables防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firew ...
- 数据分析处理库pandas及可视化库Matplotlib
一.读取文件 1)读取文件内容 import pandas info = pandas.read_csv('1.csv',encoding='gbk') # 获取文件信息 print(info) pr ...
- 2018.12.15 bzoj3676: [Apio2014]回文串(后缀自动机)
传送门 对原串建立一个后缀自动机,然后用反串在上面匹配. 如果当前匹配的区间[l,r][l,r][l,r]包裹了当前状态的endposendposendpos中的最大值,那么[l,maxpos][l, ...
- C++程序生成.exe文件,在文件夹中运行时闪现问题
问题描述:在IDE(此为Dev-C++)中编写C++程序,运行时会产生如下文字 但我想取消这三行的显示. 解决方法:1:在IDE中运行时,“请按任意键继续”是消失不掉的,但在该程序的保存路径下可以消灭 ...
- vue 开发系列(四) vue 使用外部JS
概要 在开发时我们会经常需要使用到外部的JS,这样我们需要引入外部js,然后进行使用. 实现方法 我们在开发的过程中需要使用到 sha256 将用户的密码进行加密传输. 我们对js进行一点点改造. f ...