Python學習手冊——第二部分 型別和運算(1)之字串

Novice!!! 發表於 2021-11-25
Python

Python全景

1.程式由模組構成。
2.模組包含語句。
3.語句包含表示式。
4.表示式建立並處理物件。
在python中資料是以物件的形式出現的!!!

為什麼使用內建型別

  • 內建物件使程式更容易編寫
  • 內建物件往往比定製的資料結構更有效率
  • 內建物件是語言的標準的一部分
    在解決問題的時候python不需要像C和C++先去宣告資料的型別,python會自己識別型別。

python的核心資料型別

python核心資料型別
python中沒有型別宣告,根據表示式的語法決定建立和使用物件的型別。
(在python的語言內部已經高效建立了)
但是一旦建立了一個物件,它就和操作集合繫結了只可以對字串進行字串相關的操作,對列表進行列表相關的操作。
對應的型別有其相關的操作方式。

數字型別

包括的型別有:整數,浮點數,虛數,分子分母,集合等。
其數學運算的符號:加號(+)代表加法,減號(-)代表減法,星號(*)表示乘法,雙星號(**)表示乘方。
浮點數會遇到的兩種型別:程式碼形式repr,使用者友好形式str。後者可以用print語句進行實現。

數字中的額外工具包

math包
需要使用者在引用該包之後再進行使用:import math
math.pi是列印Π的值。math.sqrt()是對括號裡的數字進行開根號處理
randow包
也是需要先進行引入import random
random.random()是隨機數字生成器,random.choice([])是隨機選擇器
[]是列表的建立用的語法,後面會詳細介紹列表。

字串型別

字串是用來記錄文字資訊的,它是一個物件的有序集合(從左到右)。字串是單個字元的字串的序列

字串序列的操作

Python學習手冊——第二部分 型別和運算(1)之字串
可以看到索引是從0開始的。這個會有清晰的解釋。
python支援反向索引
Python學習手冊——第二部分 型別和運算(1)之字串
所以我們可以將spam這個字串看成是這樣的pamspam可以將s看成是座標軸的原點,所以其索引時從0開始。
當我們只想輸出字串中的一些我們想要的資料時候,可以對字串進行切片處理
一般形式為X[I:J](但是不會包括J的值)Python學習手冊——第二部分 型別和運算(1)之字串

Python學習手冊——第二部分 型別和運算(1)之字串
在使用簡便切片時,牢記左邊界預設為0,並且右邊界預設為分片序列的長度。
值得一提的是S[-1:]是不成立的會輸出 輸出空的值,因為字串是從0開始向左向右的。從中間到兩邊。

字串的不可變性

意思就是在我們建立一個字串後,我們不能直接對字串中的字元進行修改,如果我們修改字串中的字元,我們可以通過建立一個新的字串,並以同一個變數名對其進行賦值。Python學習手冊——第二部分 型別和運算(1)之字串
核心型別中,數字、字串和元組是不可變的;列表和字典不是這樣(它們可以完全自由地改變)

型別的特定方法

目前我們學習過的每一個字串操作都是一個真正的序列操作。這些不止於用於字串,包括列表和元組。但是字串有特殊的操作方法:
S.find('pa')find這個方法是用來對字串進行查詢操作的。但是它只返回尋找的第一個字元的偏移量(也就是位置)。
S.replace('pa','XYZ')replace方法是用來替換字元的。前提是該字串有需要被替換的字元,所以還具有全域性搜尋的任務。
Python學習手冊——第二部分 型別和運算(1)之字串

line.split(',')是字串在遇到字元,時進行隔開。
S.upper()'指的是全部大寫。
S.isalpha()是進行測試,測試字串的內容。檢查一個字串中所有的字元是否都是由字母構成的,並且至少有1個字元。
如果,字串中所有的字元都是字母,則返回True,否則返回False. 該函式除了能判斷字串是否為英文字母外,也能判斷其它語言中的字母。
\n是換行。當我們需要去掉字串中的所有空格時line.rstrip()
Python學習手冊——第二部分 型別和運算(1)之字串

格式化
格式化的細講:python字串的格式化細講
Python學習手冊——第二部分 型別和運算(1)之字串

在序列中的操作都是相通的,但是方法卻是不相同的。
簡明的法則:可作用於多種型別的通用型操作都是以內建函式或表示式的形式出現的[例如,len(X),X[0]],但是型別特定的操作是以方法呼叫的形式出現的[例如,aString.upper()]。

尋求幫助###

呼叫內建的dir函式,將會返回一個列表,其中包含了物件的所有屬性。
Python學習手冊——第二部分 型別和運算(1)之字串
以雙下劃線開頭並結尾的變數名是用來表示Python實現細節的命名模式。而這個列表中沒有下劃線的屬性是字串物件能夠呼叫的方法。
但是dir(S)只是給出了所有的方法的名字,要查詢它們是做什麼的,你可以將其傳遞給help函式。
Python學習手冊——第二部分 型別和運算(1)之字串
在使用時要記得先建立一個字串,這樣才能夠有所顯示,不然會出現未定義的情況。
Python學習手冊——第二部分 型別和運算(1)之字串

編寫字串的其他方法###

可以在字串中間插入轉義字元\n空一行。\t空一個tab鍵。\0是中止字串。
Python學習手冊——第二部分 型別和運算(1)之字串
可以看\n``\t``\o是包含在字元內的。計入字元長度。
Python學習手冊——第二部分 型別和運算(1)之字串

ord()函式主要用來返回對應字元的ascii碼
Python學習手冊——第二部分 型別和運算(1)之字串

Python允許字串包括在單引號或雙引號中(它們代表著相同的東西),也允許在三個引號(單引號或雙引號)中包括多行字串常量。三個引號時,所有行都合併在一起。
Python學習手冊——第二部分 型別和運算(1)之字串
可以看到輸出結果時,換行處,python會自動新增換行符

模式匹配

字串物件的方法能夠支援基於模式的文字處理。
模式匹配的定義:資料結構中字串的一種基本運算,給定一個子串,要求在某個字串中找出與該子串相同的所有子串,這就是模式匹配。在python中的實現需要兩個步驟:1,引入re模組。2,編寫相應程式碼
跟著零個或幾個 製表符或空格,對應的程式碼是[ \t]*(.*)。認真理解加粗部分。有一個需要注意的地方,如果想用這種方法存放兩個組不能直接用[ \t]*(.*)[ \t]*(.*)。這會使第二個組為空。
Python學習手冊——第二部分 型別和運算(1)之字串
Python學習手冊——第二部分 型別和運算(1)之字串
Python學習手冊——第二部分 型別和運算(1)之字串
但是如果在兩個[ \t](.)中間新增空格,可以解決這個問題
Python學習手冊——第二部分 型別和運算(1)之字串
Python學習手冊——第二部分 型別和運算(1)之字串
這可能是轉義字元引起的問題。
下面這種情況,直接用/當分組標準就沒有問題:
Python學習手冊——第二部分 型別和運算(1)之字串
print(match.groups())把所有的部分都輸出。
print(match.group(0))按照字串進行輸出。
Python學習手冊——第二部分 型別和運算(1)之字串

Python學習手冊——第二部分 型別和運算(1)之字串
第二行就是`print(match.group(0))'的結果。