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.pswp.cn/news/371631.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371631.shtml
英文地址,請注明出處:http://en.pswp.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…