字符串


字符串基本特點

  字符串的本質是一個字符序列。Python的字符串是不可變的,無法對原字符串做任何修改。可將字符串的一部分復制到新創建的字符串,達到看起來修改的效果

  Python不支持單字符類型,單字符也是作為一個字符串使用的。

字符串的編碼

  直接支持Unicode,可表示世界上任何書面語言。16位表示一個字符,ASCII碼是Unicode的子集

  使用內置函數ord()可以把字符轉換成對應的Unicode碼

  使用內置函數chr()可以把十進制數字轉換成對應字符串

引號創建字符串

  通過單引號或雙引號創建字符串

a =  "I'm a teacher"
print(a)
b = 'My name is "TOM"'
print(b)

連續三個單引號或三個雙引號,可以創建多行字符串。

resume = ''' name="gaoqi"
company = "six"  age=  18
lover = "TOM"'''
print(resume)

空字符串和len()函數

Python允許空字符串的存在,不包含任何字符且長度為0

len()用於計算字符串中包含多少字符

轉義字符

轉義字符 描述
\(在行尾時) 續行符
\\ 反斜杠符號
\' 單引號
\" 雙引號
\b 退格
\n 換行
\t 橫向制表符
\r 回車

字符串拼接

1.可以使用+將多個字符串拼接起來。 'aa'+'bb'==>'aabb'

  ① 如果+兩邊都是字符串,則拼接

  ②如果+兩邊都是數字,則加法運算

  ③如果+兩邊類型不同,則拋出異常

2.可以將多個字符串直接放到一起實現拼接。例如: 'aa' 'bb'==>'aabb'

字符串復制

  使用*可是實現字符串的復制

  【操作】字符串的復制操作

>>> a = 'Sxt'*3
>>> a
'SxtSxtSxt'

不換行打印

print()會自動打印一個換行符。若不想換行,可以自己通過修改end='任意字符串'。實現末尾添加任何內容

print("dhg",end='')
print("dhg",end='##')
print("dhg")

輸出:

dhgdhg##dhg
>>> 

從控制台讀取字符

使用input()從控制台讀取鍵盤輸入的內容

myname = input("請輸入姓名:")

str()實現數字轉型字符串

str()可以實現其它數據類型轉換為字符串

str(5.20)==>'5.20'  str(3.14e2) ==>  '314'  str(True)=  'True' 

使用[ ]提取字符

在字符串后面加[],在[]里面指定偏移量,可以提取該位置的單個字符

  正向搜索:

    最左側第一個字符,偏移量是0,第二個偏移量是1,以此類推。直到len(str) -1

  反向搜索

    最右側第一個字符,偏移量是-1,倒數第二個是-2,以此類推,直到-len(str)

>>> a='qwertyuiopasdfghjklzxcvbnm'
>>> a
'qwertyuiopasdfghjklzxcvbnm'
>>> a[0]
'q'
>>> a[3]
'r'
>>> a[26-1]
'm'
>>> a[-1]
'm'
>>> a[-26]
'q'

replace()實現字符串替換

字符串是不可改變的,可以通過創建新的字符串來實現

>>> a='qwertyuiopasdfghjklzxcvbnm'
>>> a.replace('c','')
'qwertyuiopasdfghjklzx高vbnm'

字符串切片slice操作

切片slice操作可以快速提取子串

[start : end :step]  (包頭不包尾)

[:] 提取整個字符串

[start:] 從start開始到結束

[:end] 從0開始到end-1

[start:end] 從start 到end-1

 split()分割和join()合並

split()可以基於指定分隔符將字符串分割成多個子字符串。若不指定分隔符,則默認使用空白字符(換行、空格、制表)

>>> a = "to be or not to be"
>>> a.split()
['to', 'be', 'or', 'not', 'to', 'be']

 

join()的作用和split()作用剛相反,用於將一系列子字符串連接起來

>>> a = ['six','six100','six200']
>>> "*".join(a)
'six*six100*six200'

 

字符串拼接要點:

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

字符串駐留機制和字符串比較

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

>>> a = "abd_33"
>>> b = "abd_33"
>>> a is b
True
>>> c = "dd#"
>>> d = "dd#"
>>> c is d
False

 

成員操作符

in/not in 關鍵字,判斷某個字符(子字符串)是否存在於字符串中

字符串常用方法匯總

常用查找方法

方法 說明
len(a) 字符串長度
a.startswith("子字符串") 是否以某字符串開頭
a.endswith("子字符串") 是否以某字符串結尾
a.find("子字符串") 第一次出現指定字符串的位置
a.rfind("子字符串") 最后一次出現指定字符串的為位置
a.count("子字符串") 指定字符串出現了幾次
a.isalnuma() 是否所有字符全是字母或數字

去除首尾信息

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

大小寫轉換

示例 說明
a.capitalzie() 產生新的字符串,首字母大寫
a.title() 產生新的字符串,每個單詞首字母都大寫
a.upper() 產生新的字符串,所有字母都轉換成大寫
a.lower() 產生新的字符串,所有字母都轉換成小寫
a.swapcase() 產生新的字符串,所有字母大小寫交換

格式排版

center()、ljust()、rjust()這三個函數用於對字符串實現排版

>>> a = "SXT"
>>> a.center(10,"*")
'***SXT****'
>>> a.center(10)
'   SXT    '
>>> a.ljust(10,"*")
'SXT*******'
>>> a.rjust(10,"*")
'*******SXT'

 

其它方法

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

字符串格式化

format()基本使用方法

str.format(),增強了字符串格式化的功能,通過{}和:來替代以前的%

format函數可以接受不限個參數,位置可以不按順序

>>> a = "姓名是:{0},年齡是:{1}"
>>> a.format("張三",19)
'姓名是:張三,年齡是:19'
>>> a.format("高希希",6)
'姓名是:高希希,年齡是:6'
>>> b = "姓名是:{0},年齡是:{1},:{0}是個好小伙"
>>> b.format("張三",22)
'姓名是:張三,年齡是:22,:張三是個好小伙'
>>> c = "名字是{name},年齡是{age}"
>>> c.format(age=22,name="張三")
'名字是張三,年齡是22'

 

通過{索引}/{參數名},直接映射參數值,實現對字符串的格式化,非常方便。

 

填充與對齊

填充常和對齊一起使用

^  <  >  分別是居中、左對齊、右對齊,后面帶寬度

:后面帶填充的字符,只能是一個字符,不指定的話默認用空格填充

 

>>> "{:*>8}".format(234)
'*****234'
>>> "我是{0},我喜歡數字{1:*>8}".format("張三",666)
'我是張三,我喜歡數字*****666'

 

數字格式化 

a = "我是{0},我的存款有{1:.2f}"
>>> a.format("張三",38888.234342)
'我是張三,我的存款有38888.23'

 

 可變字符串

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

>>> import io
>>> s = "hello,sxt"
>>> sio = io.StringIO(s)
>>> sio
<_io.StringIO object at 0x000001BEAAE53F70>
>>> sio.getvalue()
'hello,sxt'
>>> sio.seek(7)
7
>>> sio.write("g")
1
>>> sio.getvalue()
'hello,sgt'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM