Python 入門字符串

字符串基本特點
字符串的本質是:字符序列。Python 的字符串是不可變的,我們無法對原字符串做任何修改。但可以將字符串的一部分複製到新創建的字符串,達到“看起來修改”的效果。Python 不支持單字符類型,單字符也是作爲一個字符串使用的。

字符串的編碼
Python3 直接支持 Unicode,可以表示世界上任何書面語言的字符。Python3 的字符
默認就是 16 位 Unicode 編碼,ASCII 碼是 Unicode 編碼的子集。
使用內置函數 ord()可以把字符轉換成對應的 Unicode 碼;
使用內置函數 chr()可以把十進制數字轉換成對應的字符。

引號創建字符串
我們可以通過單引號或雙引號創建字符串。例如:a=’abc’;b=”gcx”
使用兩種引號的好處是可以創建本身就包含引號的字符串,而不用使用轉義字符。例如:

連續三個單引號或三個雙引號,可以幫助我們創建多行字符串。例如:

空字符串和 len()函數
Python 允許空字符串的存在,不包含任何字符且長度爲 0
len()用於計算字符串含有多少字符。例如:

轉義字符
我們可以使用“\+特殊字符”,實現某些難以用字符表示的效果。比如:換行等。常見的轉義字符有這些:

字符串拼接
1. 可以使用+將多個字符串拼接起來。例如:’aa’+ ’bb’ ==>’aabb’。
(1) 如果+兩邊都是字符串,則拼接。
(2) 如果+兩邊都是數字,則加法運算。
(3) 如果+兩邊類型不同,則拋出異常。
2. 可以將多個字面字符串直接放到一起實現拼接。例如:’aa’’bb’==>’aabb’

字符串複製
使用*可以實現字符串複製。

不換行打印
我們前面調用 print 時,會自動打印一個換行符。有時,我們不想換行,不想自動添加換行
符。我們可以自己通過參數 end = “任意字符串”。實現末尾添加任何內容:

從控制檯讀取字符串
我們可以使用 input()從控制檯讀取鍵盤輸入的內容。

str()實現數字轉型字符串
str()可以幫助我們將其他數據類型轉換爲字符串。例如:
str(5.20) ==> ‘5.20’str(3.14e2)==>’314.0’ str(True) ==> ‘True’
當我們調用 print()函數時,解釋器自動調用了 str()將非字符串的對象轉成了字符串。

使用[]提取字符
字符串的本質就是字符序列,我們可以通過在字符串後面添加[],在[]裏面指定偏移量,可以提取該位置的單個字符。
正向搜索:
最左側第一個字符,偏移量是 0,第二個偏移量是 1,以此類推。直到 len(str)-1爲止。
反向搜索:
最右側第一個字符, 偏移量是-1, 倒數第二個偏移量是-2, 以此類推, 直到-len(str)爲止。

replace()實現字符串替換
字符串是“不可改變”的,我們通過[]可以獲取字符串指定位置的字符,但是我們不能改變
字符串。我們嘗試改變字符串中某個字符,發現報錯了

字符串不可改變。但是,我們確實有時候需要替換某些字符。這時,只能通過創建新的字符串來實現。

整個過程中,實際上我們是創建了新的字符串對象,並指向了變量 a,而不是修改了以前的字符串。 內存圖如下:

字符串切片 slice 操作
切片 slice 操作可以讓我們快速的提取子字符串。標準格式爲:[起始偏移量 start:終止偏移量 end:步長 step]

切片操作時,起始偏移量和終止偏移量不在[0,字符串長度-1]這個範圍,也不會報錯。起始
偏移量小於 0 則會當做 0,終止偏移量大於“長度-1”會被當成-1。例如:

split()分割和 join()合併
split()可以基於指定分隔符將字符串分隔成多個子字符串(存儲到列表中)。如果不指定分隔
符,則默認使用空白字符(換行符/空格/製表符)。示例代碼如下:

拼接字符串要點:
使用字符串拼接符+,會生成新的字符串對象,因此不推薦使用+來拼接字符串。推薦使用 join 函數, 因爲 join 函數在拼接字符串之前會計算所有字符串的長度, 然後逐一拷貝,僅新建一次對象。

 

字符串駐留

僅保存一份相同且不可變字符串的方法,不同的值被存放在字符串駐留池中。Python 支持字符串駐留機制,對於符合標識符規則的字符串(僅包含下劃線(_)、字母和數字)會啓用字符串駐留機制駐留機制。

字符串比較和同一性
我們可以直接使用==,!=對字符串進行比較,是否含有相同的字符。
我們使用 is / not is,判斷兩個對象是否同一個對象。比較的是對象的地址,即 id(obj1)是否和 id(obj2)相等。
成員操作符
in /not in 關鍵字,判斷某個字符(子字符串)是否存在於字符串中。

 

常用查找方法

len(a)   字符串長度
a.startswith('我是高晨曦')   以指定字符串開頭
a.endswith('過我')   以指定字符串結尾
a.find('高')   第一次出現指定字符串的位置
a.rfind('高')  最後一次出現指定字符串的位置
a.count("編程")  指定字符串出現了幾次
a.isalnum()  所有字符全是字母或數字

去除首尾信息
我們可以通過 strip()去除字符串首尾指定信息。通過 lstrip()去除字符串左邊指定信息,rstrip()去除字符串右邊指定信息。

大小寫轉換
編程中關於字符串大小寫轉換的情況,經常遇到。我將相關方法彙總到這裏。

 

格式排版
center()、ljust()、rjust()這三個函數用於對字符串實現排版。示例如下

其他方法
1. isalnum() 是否爲字母或數字
2. isalpha() 檢測字符串是否只由字母組成(含漢字)。
3. isdigit()檢測字符串是否只由數字組成。
4. isspace() 檢測是否爲空白符
5. isupper() 是否爲大寫字母
6. islower() 是否爲小寫字母

字符串的格式化
format()基本用法
Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。
基本語法是通過 {} 和 : 來代替以前的 % 。
format 函數可以接受不限個參數,位置可以不按順序。

填充常跟對齊一起使用
^、<、>分別是居中、左對齊、右對齊,後面帶寬度
:號後面帶填充的字符,只能是一個字符,不指定的話默認是用空格填充

 

數字格式化
浮點數通過 f,整數通過 d 進行需要的格式化。案例如下:

 

可變字符串
在 Python 中,字符串屬於不可變對象,不支持原地修改,如果需要修改其中的值,只能創建新的字符串對象。但是,經常我們確實需要原地修改字符串,可以使用 io.StringIO對象或 array 模塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章