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成员运算符 - 如果字符串中包含给定的字符返回 TrueH in a 输出结果 True
not in成员运算符 - 如果字符串中不包含给定的字符返回 TrueN 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 {name},and {age} years old.".format(name="Jonathan", age=28) # 格式化

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("Alex")   >>>  1   # 返回下标

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",

"age": 20,

"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",

    "balance": 800

  }

}

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["card"]["balance"] -= 100   # credit_card1的"balance" 与 credit_card2的"balance" 同步变化

credit_card2["card"]["balance"] -= 200   # credit_card2的"balance" 与 credit_card1的"balance" 同步变化

credit_card3["card"]["balance"] -= 500    # 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(50,"*"))  # 读取剩下的所有内容,文件大时不要用

data = f.read()  # 打印文件

print(data)

f.close() # 关闭文件

 

 

 

 

 

 

 

 

打开文件的模式有:

r, 只读模式 (默认)

w,只写模式 (不可读;不存在则创建;存在则删除内容)

a,追加模式 (可读; 不存在则创建;存在则只追加内容)

"+" 表示可以同时读写某个文件

r+,可读写文件。(可读;可写;可追加)

w+,写读

a+,同a

"b"表示处理二进制文件 (如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

rb、wb、ab

转载于:https://www.cnblogs.com/jonathan1314/p/6288111.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shiro java配置,InI 配置 - 跟我学 Apache Shiro_教程_Java开发社区

INI 配置之前章节我们已经接触过一些 INI 配置规则了,如果大家使用过如 Spring 之类的 IoC/DI 容器的话,Shiro 提供的 INI 配置也是非常类似的,即可以理解为是一个 IoC/DI 容器,但是区别在于它从一个根对象 securityManager 开始。…

在Spring容器外部连接对象依赖项

有几种有趣的方法可以设置在Spring容器外部实例化的对象的属性和依赖关系。 用例首先,为什么我们需要在Spring容器之外进行依赖注入–我知道三个用例,其中我实例化了Spring容器之外的对象并需要注入依赖。 首先考虑使用Spring TaskExecutor执行一系列任…

前端学习路线汇总

https://123.w3cschool.cn/plk2fihttps://www.w3cschool.cn/nodejs/nodejs-global-object.htmlnode.js转载于:https://www.cnblogs.com/sxz2008/p/7238773.html

MediaInfo源代码分析 1:整体结构

博客地址:http://blog.csdn.net/leixiaohua1020/article/details/12016231 MediaInfo源代码分析系列文章列表: MediaInfo源代码分析 1:整体结构MediaInfo源代码分析 2:API函数MediaInfo源代码分析 3:Open()函数MediaI…

测试RESTful服务的客户端

开发使用RESTful Web API的应用程序可能意味着开发服务器和客户端。 为服务器端编写集成测试可以像使用Arquillian来启动服务器一样容易,并且可以通过REST确保测试服务是否按预期工作。 问题是如何测试客户端。 在本文中,我们将了解如何使用模拟来测试客…

linux mysql误删,linux下MySQL安装与删除 (Ubuntu)

1、MySQL安装A)MySQL安装: sudo apt-get install mysql-server mysql-clientB)启动/停止MySQL服务:MySQL 在安装以后,MySQL 就已经启动;如果需要手动启动或停止则如下操作:手动启动服务: sudo start mysql手…

对多态的理解例子

public class A {public String show(D obj) {return ("A and D");}public String show(A obj) {return ("A and A");} }class B extends A{public String show(B obj){ //重载return ("B and B");}public String show(A obj){ //重写show(A obj…

【Java每日一题】20170120

20170119问题解析请点击今日问题下方的“【Java每日一题】20170120”查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; import java.util.Arrays; import java.util.List; public class Ques0120 { publ…

使用NoSQL实现实体服务–第2部分:合同优先

现在该开始使用NoSQL项目对SOA实体服务进行编码了,并且正如我所承诺的,我将从Web服务的合同开始。 看一下本系列的第1部分 。 这种从Web服务合同定义开始的技术是面向服务的体系结构实现的“合同优先”方法的核心,并具有许多技术优势&#xf…

php hugepage,【原创】解决Redis启动报错:Transparent Huge Pages (THP) support enabled in your kernel...

问题背景Redis启动报错:WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.This will create latency and memory usage issues with Redis.To fix this issue run the command echo never > /sys/kernel/mm/transparent_hugepage/…

hibernate cascade的真正含义

hibernate cascade 是 OneToOne OneToMany ManyToOne ManyToMany等注解的属性&#xff0c;表示级联操作。 /*** (Optional) The operations that must be cascaded to* the target of the association.** <p> By default no operations are cascaded.*/CascadeType[] cas…

射线碰撞检测

在我们的游戏开发过程中&#xff0c;有一个很重要的工作就是进行碰撞检测。例如在射击游戏中子弹是否击中敌人&#xff0c;在RPG游戏中是否捡到装备等等。在进行碰撞检测时&#xff0c;我们最常用的工具就是射线&#xff0c;Unity 3D的物理引擎也为我们提供了射线类以及相关的函…

高级ZK:异步UI更新和后台处理–第1部分

异步UI更新非常有用&#xff0c;因为它们通常可以提高响应性&#xff0c;可用性和用户界面的总体感觉。 我将在这里重点介绍ZK框架&#xff0c;但是通常&#xff0c;相同的原理也适用于桌面UI&#xff08;Swing&#xff0c;SWT&#xff09;。 长时间运行的处理 有时&#xff0…

php注册登录遍写入 遍验证,自动注册登录验证机制的php代码

在phpwind站点后台添加“广告管家”(CNZZ的一款广告投放的应用)的应用&#xff0c;整个“广告管家”通过iframe载入&#xff0c;载入的具体内容根据不同站点显示针对该站点的具体内容。出于意用性方面的考虑&#xff0c;需要以下二点&#xff1a;1、首次进入“广告管家”页面自…

转载:tensorflow保存训练后的模型

训练完一个模型后&#xff0c;为了以后重复使用&#xff0c;通常我们需要对模型的结果进行保存。如果用Tensorflow去实现神经网络&#xff0c;所要保存的就是神经网络中的各项权重值。建议可以使用Saver类保存和加载模型的结果。 1、使用tf.train.Saver.save()方法保存模型 tf.…

php url传递变量,php – 在laravel中通过url传递变量

我是laravel的新手,我正在努力让我的网址格式正确.格式为http://mysite/blog?category1 instead of http://mysite/blog/category1这些是我正在使用的文件,有没有办法将路由放入BlogControllerRoute.phpRoute::get(blog/{category}, function($category null){// get all the…

Apache Wicket:记住我的功能

在Web应用程序中&#xff0c;具有“记住我”功能非常普遍&#xff0c;该功能使用户每次访问我们的网站时都能自动登录。 可以使用Spring Security来实现这种功能&#xff0c;但我认为将基于请求的身份验证框架与基于组件的Web框架结合使用并不是最好的主意。 这两个世界不能很好…

Ubuntu 安装中文

系统环境&#xff1a; 1. 官网 http://pinyin.sogou.com/linux/ 下载安装包。 2. 先运行 apt-get update 。 3. 再运行 apt-get -f install 。 4. 再运行 可能有的UBuntu系统自带了。 5. 如果下载的搜狐输入法安装包的格式为 .deb 的&#xff0c; 运行 &#xff1a; dpk…

Eigen教程(10)

整理下Eigen库的教程&#xff0c;参考&#xff1a;http://eigen.tuxfamily.org/dox/index.html 混淆 在Eigen中&#xff0c;当变量同时出现在左值和右值&#xff0c;赋值操作可能会带来混淆问题。这一篇将解释什么是混淆&#xff0c;什么时候是有害的&#xff0c;怎么使用做。 …

matlab把符号数,Matlab 符号与数值之间的转换

符号运算得到的是精确的解析解&#xff0c;但是有时需要进行数值转换&#xff0c;主要通过以下几个函数实现。1.digits 函数调用方法&#xff1a;digits(D)函数设置有效数字个数为D的近似解精度。2.vpa 函数vpaVariable-precision arithmeticSyntaxR vpa(A)R vpa(A,d)Descrip…